Ruby on rails Rails sum方法返回未定义的
为#生成以下错误Ruby on rails Rails sum方法返回未定义的,ruby-on-rails,ruby,ruby-on-rails-4.2,Ruby On Rails,Ruby,Ruby On Rails 4.2,为#生成以下错误undefined method+”,因为您的@debits_for_rate是一个对象,而不是一个数字数组 @debits\u为费率。总额(&:金额) 否则 @debits\u for\u rate.map(&:amount.inject)(:+) 这将为您获取总和。您将AR转换为数组,然后执行Ruby操作,而可以使用数据库级计算,这样做效率很低 但要解决这一特殊问题,您应该: @debits_for_rate.sum(&:amount) 请删除您的答案并使用inj
undefined method+”,因为您的@debits_for_rate是一个对象,而不是一个数字数组
@debits\u为费率。总额(&:金额)
否则
@debits\u for\u rate.map(&:amount.inject)(:+)
这将为您获取总和。您将AR转换为数组,然后执行Ruby操作,而可以使用数据库级计算,这样做效率很低
但要解决这一特殊问题,您应该:
@debits_for_rate.sum(&:amount)
请删除您的答案并使用inject
code编辑@AndreyDeineko答案。Thanks@ABPrime没有必要用inject
编辑我的答案,因为在一个数组上进行单次遍历总是比在两个数组上进行单次遍历更有效(如这里的map
和inject
):)@AndreyDeineko:同意。同意上面的说法是无效的;缓慢的do-a-little-step-n-verify过程的子级。解决了的
@rates.each do |rate|
@debits_for_rate = @debits.select{ |i| i.vatunitid == rate }
@debits_for_rate.count
@debits_for_rate.sum(:amount)
@debits_for_rate.sum(&:amount)