1
2

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 3 years have passed since last update.

[Rails]deviseのカスタマイズ。ユーザー登録、編集後のリダイレクトページを変える方法と、編集時のパスワード入力をスキップする方法

Last updated at Posted at 2021-01-03

駆け出しエンジニアの備忘録です。初投稿です。
またいつか「あれどうやるんだっけ?」となった時に再度調べるのも効率が悪いので、ここに残していこうと思います。
間違いなどがあればご報告をお願い致します。
#デフォルトはrootパス
僕の環境だとrootはトップページにリダイレクトしてしまうので、どちらもユーザーの詳細画面に遷移するようにしたい。
deviseの導入などの準備は割愛いたします。
##1.コントローラーの作成

$ rails g devise:controllers users

いくつか作成されたコントローラーの中で今回使うのはregistrations_controller.rb

ここに追記する

controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
  
  # 以下を追記
  protected

  def after_sign_up_path_for(resource)
    flash[:notice] = '登録完了!編集ボタンからプロフィール画像と自己紹介文を登録できます。'
    user_path(resource) #ここにリダイレクト先のパスを指定
  end

  def after_update_path_for(resource)
    user_path(resource) #ここにリダイレクト先のパスを指定
  end
end

これでコントローラーの準備はok

##2.routes.rbの編集
作成したコントローラーに
class Users::RegistrationsController < Devise::RegistrationsController
という記述があるように、元々deviseで使われているDevise::RegistrationsControllerを継承した新しいUsers::RegistrationsControllerを作成した、ということなので、ここに記述をしてくことで追加の設定を反映していくことができる。
(継承してるということに全然気付いておらず、「コントローラーを新しく作るってことはこのコメントアウトされてるnewアクションとかupdateアクションとか全部自分で触る必要あるのか!?」って焦ったけどそのままでも大丈夫だった)
ただしこのままではUsers::RegistrationsControllerを使うことができないので、
以下を記述して使うことを明示する必要がある。

routes.rb
devise_for :users, controllers: { registrations: 'users/registrations' }

これにより作成したコントローラが使えるようになりました。
ちゃんと指定したパスにリダイレクトされるはずです。

##編集時のパスワードの入力をスキップする設定
デフォルトだと更新しようとしても設定中のパスワードを入力するように要求されてしまう。
パスワードの入力無しで更新できるようにします。
先程と同様に、コントローラーに以下を追記します。

controllers/users/registrations_controller.rb
  def update_resource(resource, params)
    resource.update_without_password(params)
  end

あとはviewにあるcurrent_passwordのフォーム部分を削除すればokです。

参考にさせていただいた記事(参考というより殆どそのまま)
https://qiita.com/Tatty/items/a9759755e562ac4693ec
https://note.com/ruquia7/n/n4838547cb054
https://qiita.com/machamp/items/f6a7b003fcda3f04094a

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?