身份验证 – 找不到id = 1的用户
发布时间:2020-12-17 04:04:33 所属栏目:百科 来源:网络整理
导读:我有一个current_user方法来处理身份验证. application_controller.rb protect_from_forgeryhelper_method :current_userdef current_user @current_user ||= User.find(session[:user_id]) if session[:user_id]end 但是当我尝试访问某个页面时,我收到以下
我有一个current_user方法来处理身份验证.
application_controller.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).尝试处理ActiveRecord引发的RecordNotFound异常,并返回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 请记住通过将skip_before_filter:require_login添加到管理您的身份验证的控制器来省略require_user以进行登录操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |