Вам необходимо переопределить passwords_controller
Devise, который вы можете увидеть по умолчанию для here. Во-первых, создать свой собственный контроллер, который унаследует от контроллера DEViSE:
class User::PasswordsController < Devise::PasswordsController
После того, как у вас есть контроллер готов, добавить все другие методы, которые вы не хотите, чтобы переопределить, а просто позвонить супер внутри из них. Это будут методы new
, edit
и create
. Также не забудьте добавить защищенный метод after_sending_reset_password_instructions_path_for(resource_name)
.
Способ, которым вы занимаетесь переопределением, является действием update
.
def update
self.resource = resource_class.reset_password_by_token(resource_params)
if resource.errors.empty?
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, "Your flash message here")
redirect_to new_user_session_path
else
respond_with resource
end
end
Все мы изменим здесь, чтобы удалить строку для входа пользователя с перенаправлением на страницу входа в, а затем установить наш пользовательский флэш-сообщение.
Наконец, вы должны сказать изобрести, чтобы использовать новый контроллер, поэтому в routes.rb
изменения devise_for :users
к:
devise_for :users, :controllers => { :passwords => 'users/passwords' }
И что должны это сделать.