- 更新日: 2016年11月22日
- Devise
Rails Devise でユーザーがプロフィール情報を更新後に元のページにリダイレクトさせる
Devise では、ユーザーがプロフィール情報(アカウント情報)を更新すると、デフォルトでは root_path へとリダイレクトされます。プロフィール情報編集ページのパスは、edit_user_registration_path(/users/edit)。これを、元のプロフィール情報編集ページにリダイレクトさせる設定を行います。
— 環境 —
rails 5.0.0.1
devise 4.2.0
【追記 2016/11/22】
Rails 5 + Devise 4 の環境でも同様の内容で実装できます。
【追記ここまで】
— 記事初回公開時の環境 —
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
describe "User registration page" do describe "edit" do let(:user) { FactoryGirl.create(:user) } before do login user end describe "redirects to user's edit page after the user edits his account" do before do visit edit_user_registration_path click_button "変更を保存" end it { should have_title( "アカウント情報編集" ) } end end end |
こんな感じで、ユーザーが”変更を保存”した後に、リダイレクト先のページが”アカウント情報編集”というタイトルを持つことを確認して、元のアカウント情報編集ページにリダイレクトされることをチェックしました。
テストを実行し、この時点ではテストが通らないことを確認。
RegistrationsController で after_update_path_for をオーバーライド
続いて、カスタマイズ用に継承した RegistrationsController で、after_update_path_for メソッドをオーバーライド。
app/controllers/users/registrations_controller.rb
1 2 3 4 5 6 7 8 |
class RegistrationsController < Devise::RegistrationsController protected def after_update_path_for(resource) edit_user_registration_path end end |
after_update_path_for のリダイレクト先を edit_user_registration_path に設定しています。
最後に routing 確認
1 2 3 4 5 6 |
devise_for :users, :controllers => { :sessions => "users/sessions", :registrations => "users/registrations", :passwords => "users/passwords", :omniauth_callbacks => "users/omniauth_callbacks" } |
:registrations => “users/registrations” のルーティングを設定しておく。
以上の実装でテストが通り、ブラウザ上での動作確認でも元のユーザー情報編集ページヘとリダイレクトされるようになりました。
- Devise の関連記事
- RailsのDevise認証機能での実装チェックリストまとめ
- Deviseで送信されるメールのfrom(送信者メールアドレス)を変更
- Facebook の OAuth 認証で OAuthException(191)エラー
- Rails Devise でパスワードリセットなどのメールテンプレート(Mailer ビュー)をカスタマイズ
- Rails + Devise 環境でのフレンドリーフォワーディング機能を修正
- Deviseでユーザー登録完了時にウェルカムメールを送信する
- Devise でユーザーがパスワードなしでアカウント情報を変更するのを許可
- Rails Deviseの日本語化辞書ファイル(devise.ja.yml)
- Rails + Devise で admin ユーザー(管理者)を削除できないようにする
- Devise3.2.2 のデフォルト設定では、Rememberable の remember_token のカラムがないのでソースを解読してみた
- 初回公開日: 2014年4月19日
Leave Your Message!