deviseでアクションの完了後に移動するパスをカスタマイズしたい

ログイン/ログアウト後などの遷移先をカスタマイズする場合は、各コントローラーで以下のメソッドで、移動させたいパスを返すようにオーバーライドします。

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',
}
Share it!
目次
閉じる