103

最近 Rails を調べていると、 への参照がたくさんあることに気付きましたcurrent_user。これはDeviseだけのものですか?また、Devise を使用している場合でも、自分で手動で定義する必要がありますか? 使用するための前提条件はありcurrent_userますか (セッション、ユーザーなどの存在など)?

4

2 に答える 2

90

これは、Devise などのいくつかの gem によって定義されます。

通常はログイン後のセッションのどこかに user_id を保存する必要があります。また、アプリにユーザー、認証などがあり、必要であると想定しています。

通常、次のようなものです。

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end
end

これは、 User クラスが存在することを前提としています#{Rails.root}/app/models/user.rb

更新: 現在のユーザーがいない場合、追加のデータベース クエリを回避します。

于 2012-10-04T03:48:07.473 に答える
10

はい、current_user使用しsessionます。独自の認証をロールしたい場合は、アプリケーション コントローラーで同様のことを行うことができます。

def current_user
  return unless session[:user_id]
  @current_user ||= User.find(session[:user_id])
end
于 2012-10-04T03:51:54.270 に答える