Использовать current_user в контроллере приложения - PullRequest
0 голосов
/ 06 октября 2011

Я использую devise для аутентификации. В моей модели User есть поле "locale", которое я хочу использовать в контроллере приложения для текущего вошедшего в систему пользователя. Итак, у меня есть это в контроллере приложения:

    @user = User.current_user.locale

Но это не работает. Как я могу получить доступ к полям текущего пользователя в контроллере приложения? И разработчик не создал контроллер пользователей, где я могу найти это, когда я хочу внести некоторые изменения там? Спасибо!

Ответы [ 3 ]

2 голосов
/ 06 октября 2011

current_user уже является объектом пользователя, просто вызовите для него локаль:

@user = current_user
locale = current_user.locale
0 голосов
/ 07 января 2014

current_user, как обычно, доступен в контроллере приложения.чтобы получить доступ к нему в каждом запросе (в вашем контроллере приложения):

before_filter :get_locale

def get_locale
  @user = current_user
  locale = @user.locale
end
0 голосов
/ 06 октября 2011

current_user - это метод экземпляра, то есть вы можете вызывать его только (или внутри) экземпляра класса User.Когда вы делаете User.current_user, вы пытаетесь вызвать его как метод класса, т. Е. Метод самого пользователя class .

Если вам действительно нужноиспользуйте current_user в ApplicationController - в лучшем случае запах кода, а в худшем - действительно плохую идею - вы можете вернуться к Warden , поверх которого построен Devise.Например:

user = env['warden'].current_user
user.locale

Что касается вашего другого вопроса, касающегося контроллеров, то на он был дан ответ до .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...