何がしたい?
ログイン画面の「パスワードを忘れた方」よりパスワードをリセットした場合に特定のページへリダイレクトしたい。
(deviseのデフォルトの場合はログイン画面へ遷移します。)
何が難しかったのか
なんといってもdeviseは簡単にログイン回りの機能を全て実装できる代わりに何が起きているのかわからないブラックボックス状態じゃないですか?
少なくとも僕は完全に理解したとは言い難いです。
今回パスワードリセットのメールを送った後に遷移するページを指定したいだけなのに異常に難しかったので記事にしておきました。
結論
いいから教えろ!
1. routesに追加
devise_for :users, controllers: {
passwords: 'users/passwords',
}
2. Users::PasswordsControllerを作成
Devise::PasswordsControllerの継承を忘れずに。
module Users
class PasswordsController < Devise::PasswordsController
end
end
2. after_sending_reset_password_instructions_path_forを設置
module Users
class PasswordsController < Devise::PasswordsController
private
def after_sending_reset_password_instructions_path_for(resource_name)
# リダイレクト先を指定
{redirect_path}
end
end
end
以上!