如何从cookie会话数据中检索用户名(RAILS)

时间:2014-10-04 19:09:42

标签: ruby-on-rails session authentication cookies controller

我正在研究ROR,我有一些部分侧栏,它会在用户仪表板区域中呈现,我会在仪表板中返回用户名,就像这样。最初,仪表板布局仅包含在用户控制器中。但现在我需要将它与新控制器一起使用

   <h1>Welcome Back,  <%= @user.name %> </h1>

所以我把它改成了

   <h1>Welcome Back,  <%= current_user %> </h1>

但现在的问题是,current_user不是返回用户名,而是返回此

   #<User:0x007fa8ee293940>

我假设是remember_token哈希。既然current_user已经有了会话cookie,我不知道如何遍历数据库来获取用户名。有人可以帮我调整current_user,这样它会获得当前的会话用户,但会返回用户名吗?

谢谢!

这是我的会话助手

    def sign_in(user)
        remember_token = User.new_remember_token
        cookies.permanent[:remember_token] = remember_token
        user.update_attribute(:remember_token, User.digest(remember_token))
        self.current_user = user
    end

    def current_user= (user)
        @current_user = user
    end

    def current_user
        remember_token = User.digest(cookies[:remember_token])
        @current_user || User.find_by(remember_token: remember_token)       
    end

1 个答案:

答案 0 :(得分:1)

<User:0x007fa8ee293940> 是User对象的字符串表示形式。您需要该对象的name属性,类似于您之前所做的(@ user.name)。而不是current_user,current_user.name应该这样做。