Установите переменную сеанса в devise при входе - PullRequest
6 голосов
/ 15 сентября 2011

Я хотел бы установить переменную сеанса, как только пользователь войдет в систему на основе определенного поля в таблице User.Я не хочу создавать собственный контроллер Devise, если мне не нужно.Есть ли способ?Или мне придется идти по маршруту нестандартного контроллера?

Ответы [ 2 ]

12 голосов
/ 15 сентября 2011

Существует обратный вызов after_sign_in_path_for , вы можете добавить его в свой ApplicationController

protected

def after_sign_in_path_for(resource)
  session[:domain_prefix] = current_user.domain_prefix
  user_path(resource)
end

Не забудьте вернуть путь в последней строке метода, в противном случае обратный вызов будет перенаправлензапрос на содержание session[:domain_prefix]

5 голосов
/ 15 сентября 2011

Как насчет этого:

Первый ресурс, на который я посмотрю: http://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in. Также, ознакомьтесь с Как перенаправить на определенную страницу при успешной регистрации, используя rails devise gem? для некоторых идей.

Вы можете сделать что-то вроде:

def after_sign_in_path_for(resource_or_scope)
  session[:account_type] = current_user.account_type

end

Вы можете реализовать этот метод в вашем ApplicationController или в пользовательском RegistrationsController.

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