我有一个密码字段,可以验证presence
和length
,两者都运行正常。但是当我提交带有空白密码字段的表单时,它会显示两个验证的错误消息。
我想要的是如果密码为空,则不得检查length
验证器并仅显示presence
验证器的错误消息。只有密码存在才会检查长度验证器。
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:1)
与其他验证一起传递
:allow_blank => true
例如
validates :password, :presence => true, :length => { :maximum => 20, :allow_blank => true }