I've a current_user
处理身份验证的方法。
应用程序控制器.rb
protect_from_forgery
helper_method :current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
但是当我尝试访问页面时出现以下错误:
Couldn't find User with id=1
app/controllers/application_controller.rb:10:in `current_user'
我怎样才能通过@current_user
一种默认值,因此如果没有用户,它将重定向到登录页面。
谢谢你的帮助。
您的会话似乎包含旧数据,特别是不再存在的用户 ID (1)。尝试处理RecordNotFound
ActiveRecord 引发异常,并返回 nil:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue ActiveRecord::RecordNotFound
end
要重定向,您应该添加第二个before_filter
它检查用户并处理重定向到登录路径:
before_filter :require_user
def require_user
redirect_to login_path unless current_user
end
记得省略require_user
对于您的登录操作,添加skip_before_filter :require_login
管理您的身份验证的任何控制器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)