Rails:无法redirect_to存储在会话哈希中的用户ID

时间:2015-05-16 12:22:19

标签: ruby-on-rails session-variables

当用户登录时,我将用户ID存储在会话哈希中,如下所示:

session[:user_id]=user.id

随后,当用户返回网站的主页时,我想将用户重定向到他的主页,因为他已经登录:

class HomePageController < ApplicationController
    def show
        user = User.find_by(session[:user_id]) if session[:user_id]
        redirect_to user if user
    end
end

问题在于,无论session[:user_id]的值如何,用户始终会被重定向到/users/1

我做错了什么?

1 个答案:

答案 0 :(得分:0)

find_by方法需要一系列条件来评估 - 它不能只与id一起使用。

以下代码应该有效:

user = User.find_by(id: session[:user_id]) if session[:user_id]

或者,您可以使用find方法:

user = User.find(session[:user_id]) if session[:user_id]

请注意,如果找不到记录,find会引发ActiveRecord::RecordNotFound例外(find_by将返回nil)。