【Ruby on Rails】deviseを使ってアカウントの更新をパスワードの入力無しで更新をする方法

こんにちは、nishi_talk(@nishi_talk)です。
アカウントを作成するときに使っているdevise。デフォルトの設定だとアカウントを更新する時にパスワードの入力が必要です。
毎回入力するのは面倒なので、パスワードなしでも更新できるように設定したいと思います。




前提条件

各種バージョン

  • ruby 2.5.1
  • Rails 5.2.0
  • devise 4.2.0

設定

update_resourceのメゾットを単純にオーバーライドする。

app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController

#
# 省略
#

  protected

  def update_resource(resource, params)
    resource.update_without_password(params)
  end
end

edit.html.erb内にあるcurrent_passwordの項目を削除する。

<%#= f.password_field :current_password, autocomplete: "off" %>

ドキュメント

How To: Allow users to edit their account without providing a password