我使用设计进行身份验证。在我的用户模型中有一个字段“locale”,我想在当前登录用户的应用程序控制器中使用它。所以我在应用程序控制器中有这个:
@user = User.current_user.locale
但这不起作用。如何在应用程序控制器中访问当前用户的字段?并且设计没有创建用户控制器,在哪里可以找到当我想在那里进行一些更改时?谢谢!
答案 0 :(得分:2)
current_user
已经是User对象,只需在其上调用locale:
@user = current_user
locale = current_user.locale
答案 1 :(得分:0)
current_user
是一种实例方法,这意味着您只能在User
类的实例上(或内)调用它。当你执行User.current_user
时,你试图将其称为类方法,即用户类本身的方法。
如果真的需要在current_user
中使用ApplicationController
- 充其量是代码味道,最糟糕的是一个非常糟糕的主意 - 你可以依赖user = env['warden'].current_user
user.locale
3}},其中Devise建立在。 E.g:
{{1}}
关于控制器的其他问题,Warden。
答案 2 :(得分:0)
current_user在应用程序控制器中照常使用。 在每个请求中(在您的应用程序控制器中)访问它:
before_filter :get_locale
def get_locale
@user = current_user
locale = @user.locale
end
答案 3 :(得分:0)
current_user
在application_controller
中不可用,因为它扩展了base
。
简单的解决方案是像这样使用它
before_action :user_full_name
def user_full_name
@user_full_name = current_user.fname + ' ' + current_user.lname
end