has_secure_password:如何要求最小长度

Ped*_*der 5 activerecord ruby-on-rails-3

在Rails 3.1中使用has_secure_password时,如何要求密码具有最小长度?我试着这样做:

class User < ActiveRecord::Base
    ... 
    validates :password, presence: { on: create }, length { minimum: 8 }
    ...
end
Run Code Online (Sandbox Code Playgroud)

但是当表格参数中没有提供密码时,验证失败,密码"太短".对于其他属性,仅在提供字段的值时才会验证长度.这是has_secure_password实现中的错误还是我做错了什么?

apn*_*ing 4

你应该做类似的事情:

validates :password, presence: { on: create }, length { minimum: 8 }, :if => :password_changed?
Run Code Online (Sandbox Code Playgroud)

  • 嗨,干得好:)我不认为这是一个错误,在你的情况下,“password”似乎是一个虚拟属性,并且像“changed?”这样的方法仅存在于数据库行 (3认同)