3

アクティブなレコード モデルで条件付き検証を実行しようとしています。

基本的に、日付の検証が必要ない場合は、bill_due_amount がゼロより大きい場合、presence_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 の未定義メソッド `>='

この条件付き検証をどのように正確に行うことができますか?

4

2 に答える 2

2

問題はそれbill_due_amountですnil。したがって、あなたの方法では、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 に答える
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 に答える