Rails Devise でユーザーがプロフィール情報を更新後に元のページにリダイレクトさせる

Devise では、ユーザーがプロフィール情報(アカウント情報)を更新すると、デフォルトでは root_path へとリダイレクトされます。プロフィール情報編集ページのパスは、edit_user_registration_path(/users/edit)。これを、元のプロフィール情報編集ページにリダイレクトさせる設定を行います。

— 環境 —
rails-4.0.1
rspec-rails-2.14.0
capybara-2.2.0
devise-3.2.2
omniauth-1.1.4

テスト(RequestSpec)でリダイレクト先を確認

まず最初にテストを書く。基本的にユーザーの認証・認可やユーザーモデルの変更など、大事そうな部分はテストを一生懸命書いてます。今回はユーザー情報変更サブミット後のリダイレクト先の変更ですが、簡単に書けたので先にテスト書きました。

spec/requests/user_registration_pages_spec.rb

こんな感じで、ユーザーが”変更を保存”した後に、リダイレクト先のページが”アカウント情報編集”というタイトルを持つことを確認して、元のアカウント情報編集ページにリダイレクトされることをチェックしました。

テストを実行し、この時点ではテストが通らないことを確認。

RegistrationsController で after_update_path_for をオーバーライド

続いて、カスタマイズ用に継承した RegistrationsController で、after_update_path_for メソッドをオーバーライド。

app/controllers/users/registrations_controller.rb

after_update_path_for のリダイレクト先を edit_user_registration_path に設定しています。

最後に routing 確認

:registrations => “users/registrations” のルーティングを設定しておく。

以上の実装でテストが通り、ブラウザ上での動作確認でも元のユーザー情報編集ページヘとリダイレクトされるようになりました。

 

Leave Your Message!








  • トラックバックURL