Rails验证attribute_a是否存在或者attribute_b存在

时间:2014-02-27 16:05:40

标签: ruby-on-rails validation

在rails 4.0.0中,我需要验证我的模型上是否存在attribute_a,模型上是否存在attribute_b。其中一个必须存在,并且它们都不能同时存在。

我该如何编写验证?

1 个答案:

答案 0 :(得分:0)

validates_numericality_of :charge, allow_nil: true
validates_numericality_of :payment, allow_nil: true


validate :charge_xor_payment

private

def charge_xor_payment
  if !(charge.blank? ^ payment.blank?)
    errors.add(:base, "Specify a charge or a payment, not both")
  end
end

另一种方式:

a或b姓氏是强制性的

validate :a_or_b 
def a_or_b
    if a == "Last Name" or a.blank?
       errors.add(:a, "cant blank")
       errors.add(:b, "cant blank")
    end
end

source