【发布时间】:2014-05-07 07:31:50
【问题描述】:
我有一个密码字段,可以验证 presence 和 length 并且两者都工作正常。但是当我提交带有空白密码字段的表单时,它会显示两个验证的错误消息。
我想要的是,如果密码为空,则不得检查 length 验证器并仅显示 presence 验证器的错误消息。只有存在密码时才会检查长度验证器。
【问题讨论】:
标签: ruby-on-rails validation custom-validators
我有一个密码字段,可以验证 presence 和 length 并且两者都工作正常。但是当我提交带有空白密码字段的表单时,它会显示两个验证的错误消息。
我想要的是,如果密码为空,则不得检查 length 验证器并仅显示 presence 验证器的错误消息。只有存在密码时才会检查长度验证器。
【问题讨论】:
标签: ruby-on-rails validation custom-validators
您可以使用Object#with_options 和ActiveRecord::Base#new_record?:
class User < ActiveRecord::Base
with_options :if => :new_record? do |user|
user.validates :password, presence: true, length: { maximum: 20 }
end
end
【讨论】:
with_option?我需要在模型或控制器中使用它吗?请再解释一下。
连同其他验证通过这个
:allow_blank => true
例如
validates :password, :presence => true, :length => { :maximum => 20, :allow_blank => true }
【讨论】:
:allow_blank => true 应该在length 子句内::length => { :maximum => 20, :allow_blank => true }