Railsでdeviseのgemをインストールし、ユーザー登録機能は実装し終わった方で、
登録情報の編集機能を実装したい方向けです。
注意点が2つあります。
- 編集時はcurrent_passwordが要求されること。
- application_controller.rbにメソッドを呼び出す記述が必要なこと。
current_passwordの追加
編集画面のビューの入力フォームにcurrent_passwordを追加してください。
その他は設定したカラム名に準じます。
user/registrations/edit.html.erb
<%= form_with model: @user, url: user_registration_path, local: true do |f| %>
略
<%= f.password_field :current_password %>
しかし、これだけではupdateを実行してもエラーは出ないのですが、updateもされません。
以下の記載が必要になります。
application_controller.rbへ追記
updateアクションを加える場合、以下の追記が必要になります。
controller/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :configure_account_update_params, if: :devise_controller?
protected
def configure_permitted_parameters 登録機能実装時に記述したメソッドです。
devise_parameter_sanitizer.permit(:sign_up, keys: [:カラム名])
end
def configure_account_update_params こちらがupdate機能実装の際に追記するメソッドです。
devise_parameter_sanitizer.permit(:account_update, keys: [:カラム名])
end
end
これでupdateアクションに対してもストロングパラメーターを設定、updateが実行できるようになります。
なお、この追記に関しては
rails g devise:controllers users
を実行した際に生成される既成のdeviseコントローラー(registration_controller.rb)内に書いてあります。
以上です。
参考になれば幸いです。