2013-04-22 19 views
2

重置我的DB和我的每一页上获取此错误:ActiveRecord的寻找用户ID =1分贝之后:重新

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 

所以我'm不确定为什么它寻找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 
+3

您可能仍然有一个会话正在运行。并在该会话中存储'user_id = 1';)清除你的会话,你应该没问题。 – tessi 2013-04-22 22:26:15

回答

3

您已关闭浏览器并重新启动呢?

只要您的浏览器已打开,会话就存在。只是因为你重置你的分贝并不意味着会话消失了。

0

如果找不到记录,User.find将引发异常ActiveRecord :: RecordNotFound。你可能想要使用User.find_by_id,如果它找不到任何东西,它将返回nil。这样,如果会话引用了一个不存在的user_id(就像在这种情况下当您重置数据库时一样,但会话cookie仍然存在 - 如果用户被删除也会发生),您将得到期望的结果。

相关问题