db:reset后,ActiveRecord查找用户ID = 1

时间:2013-04-22 22:20:43

标签: ruby-on-rails ruby activerecord

我重置了我的数据库,并在每个页面上收到此错误:

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

2 个答案:

答案 0 :(得分:3)

您是否已关闭浏览器并重新启动它?

您的浏览器打开时存在很长时间的会话。仅仅因为你重置你的数据库并不意味着会话已经消失。

答案 1 :(得分:0)

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