在我的验证中,我已经使用了一次像
这样的条件存在 validates :contact_name, presence: true
validates :contact_adress,
presence: true, if: :contact_name?,
现在我想做相反的事情:将属性的义务置于缺少其他属性的条件下。如果我让A空,那么B必须被填充,反之亦然。
那会有用吗?
validates :attribute_A, presence true, if:attribute_B!
validates :attribute_B, presence true, if:attribute_A!
答案 0 :(得分:1)
还有一个可以与验证器一起使用的选项列表:
...
:unless
- 指定要调用的方法,proc或字符串,以确定是否不应进行验证(例如unless: :skip_validation
或unless: Proc.new { |user| user.signup_step <= 2 }
)。方法,proc或字符串应返回或评估为true
或false
值。
但是,在Object#present?
或Object#blank?
的帮助下使用if:
可能更为明确。
答案 1 :(得分:1)
您可以使用unless
或.blank?
validates :attribute_A, presence true, if: :attribute_B.blank?
或强>
validates :attribute_A, presence true, unless: :attribute_B