验证密码的正确方法

时间:2013-03-11 19:08:25

标签: ruby-on-rails validation

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义验证器方法,您可以在其中执行任何操作:

validate :password_validation

def password_validation
  unless password.length > 32 && ... # other requirements
    errors.add(:password, 'Not an md5 password provided.')
  end
end

答案 1 :(得分:1)

您可以提供自定义回调。请参阅Rails指南中的此链接:http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators