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

投稿者: | 2019年9月20日

Devise の User モデルのパラメータを、Devise の Controller/View を使わずに更新してみることとします。

現在、User モデルの内容の変更は、Devise の View と Controller を使って更新しています。registrations_controller の edit と update がその機能を具備していますが、User モデル内の個々のパラメータを個別に更新するには、更新しないパラメータを空にしておいて更新する、という感じで、なんとなく気持ちが悪いです。そこで、パラメータ個別に Controller と View を用意して更新してみます。

まずは、Devise でのパラメータの更新について、コマンドラインで確認します。

Devise でのパラメータの変更

Deviseでのパラメータの変更は、現在のパスワードを指定しての変更と、指定しない変更が可能です。

現在のパスワードを指定しないパラメータの更新

パスワードを指定しないで変更を行う場合、update を叩けばパラメータを変更することが可能です。例えば username を変更したい場合は、次のようになります。

同様にメールアドレスも変更できます。

パスワードも変更可能

ただ、パスワードの変更は password confirmation するのが一般的です。その場合も以下のように password_confirmation に値を設定してあげれば、同じパスワードを指定されていれば変更を実行、そうでなければ失敗、という動作をしてくれます。

現在のパスワードを指定するパラメータの更新

パスワードを指定して変更を行う場合、update_with_password を叩けばパラメータを変更することが可能です。例えば username を変更したい場合は、次のようになります。

現在のパスワードが一致していない場合、エラーになります。メールアドレスやパスワード変更も同様です。

 

コメントを残す

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