Где должны быть помещены обратные вызовы хранителей в приложении rails?
Я относительно новичок в рельсах. Я настроил 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 ответ
Решение
При загрузке приложения требуются ловушки Warden, поэтому в инициализаторе Devise по адресу config/initializers/devise.rb это хороший кандидат.
Тем не менее, поведение, которое вы хотите достичь, будет лучше реализовано с помощью этой функции Devise: