我的模型中有3个字段,我至少需要其中一个字段存在 - 如何使用内置验证来做到这一点?
答案 0 :(得分:1)
创建自定义验证:
validate :one_of_three
def one_of_three
errors.add(:base, 'Must have one of foo, bar or wee') unless foo || bar || wee
end
答案 1 :(得分:1)
请尝试以下操作。
validate :attributes_presence
def attributes_presence
errors.add(:base, 'At least one attribute must be present') if attr1.blank? && attr2.blank? && attr3.blank?
end
答案 2 :(得分:0)
有一种方法可以根据另一个属性的存在来有条件地验证一个属性的存在:
validates :attr_1,
presence: true,
if: ->(model) { model.attr_2.blank? && model.attr_3.blank? }
validates :attr_2,
presence: true,
if: ->(model) { model.attr_1.blank? && model.attr_3.blank? }
validates :attr_3,
presence: true,
if: ->(model) { model.attr_1.blank? && model.attr_2.blank? }