LoginSignup
1
0

More than 3 years have passed since last update.

devise gemのユーザー情報アップデートの方法

Posted at

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)内に書いてあります。

以上です。
参考になれば幸いです。

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