在Rails 3.1中使用has_secure_password时,如何要求密码具有最小长度?我试着这样做:
class User < ActiveRecord::Base
...
validates :password, presence: { on: create }, length { minimum: 8 }
...
end
但是当表格参数中没有提供密码时,验证会在更新时失败并且密码“太短”。对于其他属性,仅在提供字段的值时才会验证长度。这是has_secure_password实现中的错误还是我做错了什么?
答案 0 :(得分:4)
您应该执行以下操作:
validates :password, presence: { on: create }, length { minimum: 8 }, :if => :password_changed?
答案 1 :(得分:0)
使用这个:
validates :password, length: { minimum: 8 }, if: :password_digest_changed?
现在此验证将在任何更新密码的尝试中运行,否则不会中断,@apneaddiving 的回答很好,但它有一些小的语法问题并且只会在创建时运行,因此任何密码更新都不会验证。