Rails:臭名昭着的“current_user”来自哪里?
最近我一直在研究Rails,注意到有很多对current_user
的引用。 这只是来自devise吗? 我是否必须自己手动定义它,即使我使用Devise? 是否有使用current_user
(如会话,用户等的存在)的先决条件?
它由几个gem定义,例如Devise
您需要将user_id存储在某个地方,通常在login后进入会话。它还假定您的应用程序具有并需要用户,身份validation等。
通常,它是这样的:
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
。
更新:当没有当前用户时避免额外的数据库查询。
是的, current_user
使用session
。 你可以在应用程序控制器中做类似的事情,如果你想要自己的authentication:
def current_user return unless session[:user_id] @current_user ||= User.find(session[:user_id]) end