2

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

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
4

2 回答 2

3

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

无论您的浏览器打开多长时间,会话都会存在。仅仅因为您重置了数据库并不意味着会话消失了。

于 2013-04-22T22:25:25.757 回答
0

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

于 2013-04-22T22:29:38.420 回答