我尝试使用以下代码。我收到“无法将nil强制转换为BigDecimal”的错误消息。任何人都可以帮助我。谢谢。
迁移文件
class AddPaidAmountToVoucher < ActiveRecord::Migration
  def self.up
    add_column :vouchers, :paid_amount, :decimal, :precision => 18, :scale => 2
  end
  def self.down
    remove_column :vouchers, :paid_amount
  end
end
 
模型类(voucher_payment.rb)
after_update :update_voucher_paid_amount
def update_voucher_paid_amount
    voucher = self.voucher
    paidAmount = 0
    voucher.voucher_payments.each do |voucher_payment|
      paidAmount += voucher_payment.paid_amount if voucher_payment.is_approved == true
    end
    voucher.paid_amount = paidAmount 
    voucher.save
  end
                    版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在循环通过voucher.voucher_payments一个/某些voucher_payment时,payed_amount为零。
voucher_payment.paid_amount = nil
 
因此,当您将paidAmount添加到nil值时,就会出现此错误。