3

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

基本上,我正在尝试如果 bill_due_amount 大于零,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 的未定义方法 `>='

我该如何做这个条件验证?

4

2 回答 2

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。

于 2012-08-09T06:22:22.847 回答
2

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

def check_due_amount_of_bill
  self.bill_due_amount.present? && self.bill_due_amount >= 1
end
于 2012-08-09T06:25:39.167 回答