条件验证 - 必须存在2个字段中的1个

时间:2016-10-19 10:41:22

标签: ruby-on-rails validation

在我构建要学习的应用程序中,我想进行条件验证,其中必须至少有两个字段中的一个。

validates :key, presence: :true, if: "key_position.nil?"
validates :key_position, presence: :true, if: "key.nil?"

我关注了rails validation guide,但没有让它发挥作用。

3 个答案:

答案 0 :(得分:2)

或者您可以将custom method用于语义条件。

Task.Run

为您提供另一种解决方案:)

答案 1 :(得分:1)

您在:之前有true,这是错误的:

validates :key,          presence: true, unless: 'key_position.blank?'
validates :key_position, presence: true, unless: 'key.blank?'

validates :key,          presence: true, unless: ->(obj) { obj.key_position.blank? }
validates :key_position, presence: true, unless: ->(obj) { obj.key.blank? }

答案 2 :(得分:0)

试试这个

validates :key,          presence: true, unless: :key_position
validates :key_position, presence: true, unless: :key