0

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

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

4

2 回答 2

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 条件验证

于 2014-05-07T07:39:31.033 回答
1

与其他验证一起通过这个

:allow_blank => true

例如

validates :password, :presence => true, :length => { :maximum => 20, :allow_blank => true }
于 2014-05-07T07:32:42.677 回答