如何使用Devise访问当前用户

时间:2016-03-15 17:40:57

标签: ruby-on-rails ruby-on-rails-4 devise

我在我的应用程序中使用devise和ldap来验证用户身份。我已经设置了用户模型以及设计。我可以正确登录并注销用户,但我无法访问内置帮助器中的设备的任何信息; CURRENT_USER。

我希望应用程序的主页面在页面顶部显示当前用户名。我在users表中创建了名为display_name的列。

这是我想要的代码:

Text {
...
    property var dateOf: new Date(myTimeInMilliseconds)
    text: dateOf.toLocaleDateString() + "  " + dateOf.toLocaleTimeString()
}

当我使用byebug并尝试访问当前用户时,它返回nil。

有没有人对如何访问当前用户信息有任何建议?

更新

我尝试过使用:<% if user_signed_in? %> <div> <%= current_user.display_name %> </div> <% end %> 但我仍然得到同样的错误:未定义的方法`display_name&#39;为零:NilClass

2 个答案:

答案 0 :(得分:1)

devise文档说:

  

如果您的设计模型不是User,请替换“_user”   用“_yourmodel”。

你的模特User?如果没有,您需要使用适当的辅助方法。

答案 1 :(得分:0)

您使用的是哪个LDAP gem? devise_ldap_authenticatable

您需要在ApplicationController中定义一个实例变量@current_user,并根据经过身份验证的LDAP帐户将其设置为正确的用户记录。

然后,在登录期间,您需要设置@current_user的值,并在注销时需要将其设置为nil。

因此,对于登录和注销,您必须在Session#create和Session#destroy中实现此功能