基于列的条件验证可能是零

时间:2012-08-09 06:14:55

标签: ruby-on-rails activerecord model ruby-on-rails-3.2

嘿伙计们我正在尝试在活动记录模型中进行条件验证。

基本上我尝试的是,如果bill_due_amount大于零,则exists_of date应该在那里,否则bill_due_amount== zero则不需要验证日期。 现在我能想到这个。

validates_presence_of :next_fup_date, :if => :check_due_amount_of_bill

def check_due_amount_of_bill
  self.bill_due_amount >= 1
end

我收到错误

  

未定义的方法`> ='为nil:NilClass

我该如何进行此条件验证?提前谢谢:)

2 个答案:

答案 0 :(得分:2)

您可以尝试这样

validates_presence_of :next_fup_date, :if => "bill_due_amount >= 1"
attr_accessor :bill_due_amount

(或)

validates_presence_of :next_fup_date, :if => :check_due_amount_of_bill
attr_accessor :bill_due_amount

def check_due_amount_of_bill
  bill_due_amount >= 1
end

您必须指定attr_accessor。

答案 1 :(得分:2)

问题是bill_due_amountnil。因此,在您的方法中,您必须先检查nil,然后检查>= 1

def check_due_amount_of_bill
  self.bill_due_amount.present? && self.bill_due_amount >= 1
end