我最近一直在查看 Rails 并注意到有很多对current_user
. 这仅来自设计吗?即使我使用设计,我是否必须自己手动定义它?是否有使用current_user
的先决条件(例如是否存在会话、用户等)?
问问题
53957 次
2 回答
90
它由几个 gem 定义,例如 Devise
您需要将 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 回答