1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails devise パスワードリセット後のリダイレクト先の指定

Posted at

何がしたい?

ログイン画面の「パスワードを忘れた方」よりパスワードをリセットした場合に特定のページへリダイレクトしたい。
(deviseのデフォルトの場合はログイン画面へ遷移します。)

何が難しかったのか

なんといってもdeviseは簡単にログイン回りの機能を全て実装できる代わりに何が起きているのかわからないブラックボックス状態じゃないですか?
少なくとも僕は完全に理解したとは言い難いです。
今回パスワードリセットのメールを送った後に遷移するページを指定したいだけなのに異常に難しかったので記事にしておきました。

結論

いいから教えろ!

1. routesに追加

devise_for :users, controllers: {
  passwords: 'users/passwords',
}

2. Users::PasswordsControllerを作成

Devise::PasswordsControllerの継承を忘れずに。

module Users
  class PasswordsController < Devise::PasswordsController
  end
end

2. after_sending_reset_password_instructions_path_forを設置

module Users
  class PasswordsController < Devise::PasswordsController

    private

    def after_sending_reset_password_instructions_path_for(resource_name)
      # リダイレクト先を指定
      {redirect_path}
    end
  end
end

以上!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?