自定义消息,验证是否存在无效

时间:2013-08-15 22:07:17

标签: ruby-on-rails ruby-on-rails-3 validation ruby-on-rails-3.2

我的User模型包含以下内容:

validates :password_digest, :presence => true, :message => "The password has to be 6 or     more characters long"  

def password=(password)
  self.password_digest = BCrypt::Password.create(password) if password.length >= 6
end

问题是message中的validates无效。我收到Unknown validator: 'MessageValidator'错误。我假设presence验证工作的方式是,只检查password_digest是否为nilpassword的长度是否小于6。我想要一个优雅的解决方案,就像我尝试的那样。我已经解决了这个问题,但我真的很感激理解为什么我正在尝试的东西不起作用,并且有办法让它发挥作用。

我的工作是:

validate do |user|
  user.errors['password'] = "can't be less than 6 characters" if user.password_digest.nil?
end

1 个答案:

答案 0 :(得分:4)

这是由于validates方法的工作原理。当您将MessageValidator指定为传递给:message的哈希中的键时,它假定您正在查找validates

这可以通过重建查询来解决:

validates :password_digest, :presence => { :message => "The password has to be 6 or more characters long" }