DeviseのパラメータをDeviseのController/Viewを使わないで更新(その2)

投稿者: | 2019年9月20日

Devise の User モデルのパラメータを、Devise の Controller/View を使わずに更新してみることとします。今回は、実際に Controller と View を作って更新できるかどうかを確認します。

パスワード変更のための Controller と View の作成

例として、パスワード変更部分を作ります。パスワード変更部分ができればあとは同じように username も作れるかと思います。
パスワード変更時の方針として、変更したいパスワード、変更したいパスワードの確認、現在のパスワードを入力して、update_with_password を使って変更するものとします。

パラメータ 説明
password 変更したあとのパスワード
password_confirm 変更したあとのパスワード(確認用)
current_password 現在のパスワード

ルーティングの設計

Profile のときと同様に、DHH 流ルーティングでやっていきます。

これで、account/password に対して GET と PATH/UPDATE すればパスワードの変更が行えます。

パスワード変更 Controller の作成

Profile のときと同様に、 Controller を作成します。また、config/routes.rb に変更が加えられるので、それに関しては削除しておきます。

app/controllers/accounts/passwords_controller.rb を編集します。ストロングパラメータとして :password, :password_confirmation, :current_password を受け付けて、これを用いて update_with_password を行っています。

パスワード変更 View の作成

app/views/accounts/passwords/edit.html.erb を編集します。

動作確認

ここまででパスワード変更画面はできたはずですので、動作確認します。例によって rails サーバを起動して http://127.0.0.1:3000/account/password/edit を叩きます。

パスワードを変更すると、redirect 指定を無視してログイン画面に戻ったかと思います。

その他のパラメータの変更

参考までに載せておきます。

 

パスワード変更

コントローラ

View

email 変更

コントローラ

View

あとは、account の show.html.erb で書く編集画面へのリンクをつけておきましょう。

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です