0

我创建了一个用户并将 id 存储在永久 cookie 中:

def save_user_id_cookie
  cookies.permanent.signed[:user_id] = @user_id
end

这是一个链接

然后尝试访问它:

helper_method :current_user

private
def current_user
  @current_user = @current_user || User.find(cookies.signed[:user_id])
end

这是一个链接

我在我的机器上看到了 cookie,但是当我尝试加载主页时,我得到:

Couldn't find User without an ID

app/controllers/application_controller.rb:8:in `current_user'

控制器在这里

4

3 回答 3

1

相信这条线

@current_user = @current_user || User.find(cookies.signed[:user_id])

应该

@current_user = @current_user || User.find(cookies[:user_id])

*旁注:对于更少的代码,您可以尝试分配

@current_user ||= User.find(cookies[:user_id])
于 2011-04-23T21:03:54.220 回答
1

在你的save_user_id_cookie

def save_user_id_cookie
    cookies.permanent.signed[:user_id] = @user_id # may be @user.id?
    puts 'saved cookie'
end

@user_id是零。我认为你应该@user.id改用。

于 2011-04-23T21:08:28.520 回答
0

尝试这个:

@current_user = @current_user || User.find(*cookies.signed[:user_id])

注意 cookie 前的 *。

是的,正如所@nash指出的,user_id实际上应该是user.id.
我没有费心去那里寻找错误,因为你说你可以在你的机器上看到 cookie。

于 2011-04-23T21:05:26.327 回答