自定义消息,validation是否存在无效
我的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
问题是validates
中的message
不起作用。 我得到一个Unknown validator: 'MessageValidator'
错误。 我假设presence
validation工作的方式是它只检查password_digest
为nil
, password
的长度小于6。我想要一个优雅的解决方案,就像我尝试的那样。 我已经解决了这个问题,但我真的很感激理解为什么我正在尝试的东西不起作用,并且有办法让它发挥作用。
我的工作是:
validate do |user| user.errors['password'] = "can't be less than 6 characters" if user.password_digest.nil? end
这是由于validates
方法的工作原理。 它假定您在指定时查找MessageValidator
:message
作为传递给validates
的哈希中的键。
这可以通过重建查询来解决,如下所示:
validates :password_digest, :presence => { :message => "The password has to be 6 or more characters long" }