我重置了我的数据库,并在每个页面上收到此错误:
ActiveRecord::RecordNotFound in HomeController#index
Couldn't find User with id=1
lib/authenticated_system.rb:15:in `current_user'
lib/authenticated_system.rb:23:in `logged_in?'
lib/authenticated_system.rb:36:in `login_required'
authenticated_system.rb
中的违规代码是:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id].present?
end
所以我不确定为什么它正在寻找id = 1的用户。没有用户。 current_user
不应返回任何内容。为什么我会收到此错误?
供参考,logged_in?
是:
def logged_in?
!current_user.nil?
end
login_required
:
def login_required
logged_in? && authorized? ? true : access_denied
end
答案 0 :(得分:3)
您是否已关闭浏览器并重新启动它?
您的浏览器打开时存在很长时间的会话。仅仅因为你重置你的数据库并不意味着会话已经消失。
答案 1 :(得分:0)
如果无法找到记录,User.find将引发异常ActiveRecord :: RecordNotFound。您可能想要使用User.find_by_id,如果找不到任何内容,将返回nil。这样,如果会话引用了不存在的user_id(在这种情况下,当您重置数据库时,但会话cookie仍然存在 - 如果用户被删除也会发生),您将获得所需的结果。