Rails定制验证一个接一个

时间:2014-05-07 07:31:50

标签: ruby-on-rails validation custom-validators

我有一个密码字段,可以验证presencelength,两者都运行正常。但是当我提交带有空白密码字段的表单时,它会显示两个验证的错误消息。

我想要的是如果密码为空,则不得检查length验证器并仅显示presence验证器的错误消息。只有密码存在才会检查长度验证器。

2 个答案:

答案 0 :(得分:2)

您可以使用Object#with_optionsActiveRecord::Base#new_record?

class User < ActiveRecord::Base
  with_options :if => :new_record? do |user|
    user.validates :password, presence: true, length: { maximum: 20 }
  end
end  

rails conditional validation

答案 1 :(得分:1)

与其他验证一起传递

:allow_blank => true

例如

validates :password, :presence => true, :length => { :maximum => 20, :allow_blank => true }