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