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)
问题是messageinvalidates不起作用。我得到一个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 次 |
| 最近记录: |