开发者社区> 问答> 正文

不能将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 965 0
1 条回答
写回答
取消 提交回答
  • 在循环通过voucher.voucher_payments一个/某些voucher_payment时,payed_amount为零。

    voucher_payment.paid_amount = nil
    
    

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

    2020-01-04 14:03:31
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载