生成以下错误undefined method +' for #<Debit
控制器动作定义

@debits = Debit.order("vatunitid ASC").where('unit_id = ? AND folio_id = ?', session[:unit_id], @folio.id).to_a
@adhoc_folios = Folio.order("created_at asc").where(['checkout IS NULL AND unit_id = ? AND id != ?', session[:unit_id], @folio.id]).all
@vatunits = Vatunit.where(['unit_id = ?', session[:unit_id]]).to_a
@rates = @debits.map(&:vatunitid).uniq

目前(为了测试目的)在视野中
 @rates.each do |rate|
   @debits_for_rate = @debits.select{ |i| i.vatunitid == rate }
   @debits_for_rate.count
   @debits_for_rate.sum(:amount)

count指令返回正确的值
在这一点上被称为总和是不存在的。
这是怎么发生的,又是怎么克服的呢?

最佳答案

通过将ar转换为数组,然后执行ruby操作,而可以使用数据库级计算,这样做效率很低。
但要解决这个问题,你应该:

@debits_for_rate.sum(&:amount)

08-18 12:45