Rails设计 - 使用update_without_password时验证密码字段

时间:2015-03-10 18:13:53

标签: ruby-on-rails devise

我按照Devise wiki上的说明操作,允许用户在不提供密码的情况下编辑他们的帐户:

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

我的表单中仍然有password和password_confirmation字段。我只是不希望用户输入他们当前的密码。使用update_without_password函数时,如何对这两个字段强制进行验证?

def configure_account_update_params
  devise_parameter_sanitizer.for(:account_update) << [:first_name, :last_name, :email, :locale, :time_zone, :phone, :password, :password_confirmation]
end

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

1 个答案:

答案 0 :(得分:1)

  

使用update_without_password函数时,如何对这两个字段强制进行验证?

我认为你应该做的是创建一个custom validation method并仅为更新方法调用它。 。你可以通过这样的方式来实现它:

#user.rb

class User < ActiveRecord::Base
  validate :validate_password_fields, on: :update

  def validate_password_fields
    errors.add(:base, "Please enter correct values") if password.blank? || password_confirmation.blank? || (password != password_confirmation)
  end
end