更新密码时添加密码验证

时间:2017-09-06 05:03:10

标签: ruby-on-rails

我在rails项目中对用户进行了以下验证

validates :password,   presence: true, format: { with: /^[a-zA-Z0-9]+$/, multiline: true }, on: :create

如何在devise_token_auth密码更新

中验证密码

1 个答案:

答案 0 :(得分:3)

你去了:

validates :password,   presence: true, format: { with: /^[a-zA-Z0-9]+$/, multiline: true }, if: :password_validation

def password_validation
  new_record? || password_digest_changed?
end

这将在两种情况下触发密码验证:

  1. 当它是新纪录时。
  2. 尝试更改密码时。
  3. 假设您使用的是has_secure_password,则会将passwordpassword_confirmation作为属性,将password_digest作为字段。 Rails公开_changed?方法以检查给定属性是否已更改(is dirty)(并且尚未保留)。

    u = User.last
    u.email = 'foobar@foobar.com'
    u.email_changed? #=> true
    u.save #=> true
    u.email_changed? #=> false