Где должны быть помещены обратные вызовы хранителей в приложении rails? - PullRequest
20 голосов
/ 11 сентября 2011

Я относительно новичок в рельсах. Я настроил Devise и хочу запустить некоторый код обратного вызова после входа пользователей.

Глядя на вики-страницу Warden , я могу использовать обратный вызов after_set_user для выполнения этой логики, например:

Warden::Manager.after_set_user do |user, auth, opts|
  unless user.active?
    auth.logout
    throw(:warden, :message => "User not active")
  end
end

Однако я не уверен, где мне хранить эти вещи. Моя первая мысль, что я мог бы положить его в config / initializers / devise.rb. Это верно? Неправильно помещать то, что по сути является кодом контроллера, в директорию config.

1 Ответ

20 голосов
/ 02 декабря 2011

Требуется перехватчик Warden, когда ваше приложение загружается, поэтому в инициализаторе Devise по адресу config / initializers / devise.rb хороший кандидат.

Однако, поведение, которое вы хотите достичь, будет лучше реализовано с помощью этой функции Devise:

https://github.com/plataformatec/devise/wiki/How-To:-Customize-user-account-status-validation-when-logging-in

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