我的付款模式如下:
class Payment < ActiveRecord::Base
attr_accessible :amount, :method, :payment_date, :reference_no, :invoice_id
belongs_to :invoice
validates :amount, presence: true
validates :method, presence: true
validates :payment_date, presence: true
validate :payment_not_more_than_balance
def payment_not_more_than_balance
if amount > self.invoice.balance
self.errors.add :amount, 'Payments should be less than or equal to the Invoice amount'
end
end
end
我正在尝试进行验证,一旦有人尝试进行大于发票余额的付款,就会发出验证错误。
目前,上面的代码向数据库提交然后运行验证。
也就是说,如果我的发票余额为 2000,当我支付 2000 时,付款已提交(发票余额为 0),然后我收到错误“付款应小于或等于发票金额',这是不必要的。
如果我在发票余额为 0 时尝试再次支付 2000,则该错误应该运行
我该如何纠正?