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

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

Devise::HogesController を継承したコントローラーを設置する。

以下、オーバーライド用コントローラーは app/controller/my/hoge_controller.rb に設置したものとする。

もっとあるのかと期待していたけど、案外少ない…。まだあるのかな?

サインイン/サインアウト

app/application_controller.rb にて実装する。

# サインイン後の遷移先 or トークン認証直後
after_sign_in_path_for(resource)

# サインアウト後の遷移先
after_sign_out_path_for(resource)

メールアドレス認証

# confirmations_controller.rb
# メール確認完了後の遷移先
after_confirmation_path_for(resource_name, resource) 

# 認証メールを再送信した後の遷移先
after_resending_confirmation_instructions_path_for(resource_name)

ルートの設定例

devise_for :users, :controllers => { :confirmations => "my/confirmations" }

OmniAuth

# omniauth_callbacks_controller.rb
# omniauth 失敗後の遷移先
after_omniauth_failure_path_for(resource_name)

ルートの設定例

devise_for :users, :controllers => { :omniauth_callbacks => "my/omniauth_callbacks" }

パスワード

# passwords_controller.rb
# パスワードリセット通知を送信した後の遷移先
after_sending_reset_password_instructions_path_for(resource_name)

ルートの設定例

devise_for :users, :controllers => { :passwords => "my/passwords" }

ユーザー登録

# registrations_controller.rb
# 認証が必要なユーザーの登録完了後の遷移先
after_inactive_sign_up_path_for(resource)

# サインアップ完了後の遷移先
after_sign_up_path_for(resource)

# ユーザー情報変更後の遷移先
after_update_path_for(resource)

ルートの設定例

devise_for :users, :controllers => { :registrations => "my/registrations" }

シェアする

  • このエントリーをはてなブックマークに追加

フォローする