ログイン/ログアウト後などの遷移先をカスタマイズする場合は、各コントローラーで以下のメソッドで、移動させたいパスを返すようにオーバーライドします。
Devise::*sController
を継承したコントローラーを設置します。
以下、オーバーライド用コントローラーは app/controller/users/*_controller.rb
に設置したものとします。
もっとあるのかと期待していたけど、案外少ない…。見落としがあるのかな…?
目次
サインイン/サインアウト
# サインイン後の遷移先 or トークン認証直後
def after_sign_in_path_for(resource); end
# サインアウト後の遷移先
def after_sign_out_path_for(resource); end
メールアドレス認証
# メール確認完了後の遷移先
def after_confirmation_path_for(resource_name, resource); end
# 認証メールを再送信した後の遷移先
def after_resending_confirmation_instructions_path_for(resource_name); end
ルートの設定例
devise_for :users, controllers: {
confirmations: 'users/confirmations',
}
OmniAuth
# omniauth 失敗後の遷移先
def after_omniauth_failure_path_for(resource_name); end
ルートの設定例
devise_for :users, controllers: {
omniauth_callbacks: 'users/omniauth_callbacks',
}
パスワード
# パスワードリセット通知を送信した後の遷移先
def after_sending_reset_password_instructions_path_for(resource_name); end
ルートの設定例
devise_for :users, controllers: {
passwords: 'users/passwords',
}
ユーザー登録
# 認証が必要なユーザーの登録完了後の遷移先
def after_inactive_sign_up_path_for(resource); end
# サインアップ完了後の遷移先
def after_sign_up_path_for(resource); end
# ユーザー情報変更後の遷移先
def after_update_path_for(resource); end
ルートの設定例
devise_for :users, controllers: {
registrations: 'users/registrations',
}