よくある下記のようなアカウント編集ページをdeviseで作る場合。

https://gyazo.com/e7b9fc1bbc0df4ccc501d3d861e76e58

  • パスワードとパスワード(確認)を入力した場合はパスワードを更新。
  • パスワードを入力しなくても他の項目(emailなど)は更新可能。

こんな感じでresource.update_without_passwordを使い分ければOK。

# app/controllers/registrations_controller.rb:
class RegistrationsController < Devise::RegistrationsController
  protected
    def update_resource(resource, params)
      if params[:password].present? && params[:password_confirmation].present?
        resource.update_attributes(params)
      else
        resource.update_without_password(params)
      end
    end
end

簡単だけどdeviseのWikiには載ってないようなので。

Comments


(Option)