Dav*_*vid 3 validation ruby-on-rails ruby-on-rails-3 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
Run Code Online (Sandbox Code Playgroud)
问题是message
invalidates
不起作用。我得到一个Unknown validator: 'MessageValidator'
错误。我假设的方式presence
验证工作是,它只是检查,如果password_digest
是nil
,它会被有password
有一个长度小于6我想一个解决方案,是优雅的,像我尝试。我已经以一种方式解决了这个问题,但我真的很感激能理解为什么我正在尝试的方法不起作用,以及有没有办法让它起作用。
我开始工作的是:
validate do |user|
user.errors['password'] = "can't be less than 6 characters" if user.password_digest.nil?
end
Run Code Online (Sandbox Code Playgroud)
这是由于该validates
方法的工作方式。它假定您正在寻找MessageValidator
指定:message
为传递给 的散列中的键的时间validates
。
这可以通过如下重构查询来解决:
validates :password_digest, :presence => { :message => "The password has to be 6 or more characters long" }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1513 次 |
最近记录: |