开发者社区 问答 正文

不能将nil强制转换为BigDecimal-Ruby On Rails(rails 2.3.2)

我尝试使用以下代码。我收到“无法将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

展开
收起
游客ufivfoddcd53c 2020-01-04 14:01:55 1001 分享 版权
1 条回答
写回答
取消 提交回答
  • 在循环通过voucher.voucher_payments一个/某些voucher_payment时,payed_amount为零。

    voucher_payment.paid_amount = nil
    
    

    因此,当您将paidAmount添加到nil值时,就会出现此错误。

    2020-01-04 14:03:31
    赞同 展开评论
问答分类:
问答标签:
问答地址: