0

我有一个用户注册页面。我希望用户密码为 4 到 16 个符号。我需要检查它们是否至少有一个大写字母和 1 个数字。比我制作这个密码的 md5 哈希并将其放入数据库中。
我如何验证它?
如果密码为 32 个符号长度,则在模型测试中进行验证:

  validates :password, :length => { :minimum => 32 , 
            :message => 'Not an md5 password provided.' }

但是,在对密码进行哈希处理并为此验证设置适当的错误之前,如何验证密码是否符合我的要求?
我想查看 user.errors[:password] 包含“必须至少有一位数字”之类的内容。和“必须至少有一个大写字母。”

4

1 回答 1

2

您可以创建一个自定义验证器方法,您可以在其中做任何您想做的事情:

validate :password_validation

def password_validation
  unless password.length > 32 && ... # other requirements
    errors.add(:password, 'Not an md5 password provided.')
  end
end
于 2013-03-11T19:12:56.990 回答