ruby-on-rails - Rails sum 方法返回未定义

标签 ruby-on-rails ruby ruby-on-rails-4.2

生成以下错误 undefined method +' for #<Debit

Controller Action 定义的地方

@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

目前在 View 中(用于测试目的)

 @rates.each do |rate| 
   @debits_for_rate = @debits.select{ |i| i.vatunitid == rate } 
   @debits_for_rate.count 
   @debits_for_rate.sum(:amount) 

计数指令返回一个正确的值
在这一点上,对求和的调用被认为是不存在的。

这是怎么发生的以及如何克服它?

最佳答案

您通过将 AR 转换为数组然后执行 Ruby 操作而可以改用数据库级计算的方式效率低下。

但要解决这个特定问题,您应该:

@debits_for_rate.sum(&:amount) 

关于ruby-on-rails - Rails sum 方法返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40380428/

相关文章:

ruby - 使用 Ruby 抓取图像数据库

ruby-on-rails - 在 rails 3 skinny 中制作胖 Controller

ruby-on-rails - 将 ruby​​ 哈希转换为 json 对象

ruby-on-rails - Rails 计算属性的数量

ruby - 有没有办法避免定义具有特定名称的方法?

ruby-on-rails - Rspec 使用开发数据库

ruby-on-rails - 在 View 助手中将部分渲染为字符串

ruby-on-rails - 当它为 "hung up"或没有响应时,如何推送到 Heroku 或获取信息/状态?

ruby-on-rails - 查找具有大于某个关联的 x 的所有对象

ruby-on-rails - Rails 4.2 弃用警告 : `serialized_attributes` is deprecated without replacement,