current_user
- это метод экземпляра, то есть вы можете вызывать его только (или внутри) экземпляра класса User
.Когда вы делаете User.current_user
, вы пытаетесь вызвать его как метод класса, т. Е. Метод самого пользователя class .
Если вам действительно нужноиспользуйте current_user
в ApplicationController
- в лучшем случае запах кода, а в худшем - действительно плохую идею - вы можете вернуться к Warden , поверх которого построен Devise.Например:
user = env['warden'].current_user
user.locale
Что касается вашего другого вопроса, касающегося контроллеров, то на он был дан ответ до .