可能是一个超级简单的解决方案,但试图找出如何找到属于“量”整列的总和:总和阵列使用。凡
@milestones = Milestone.where(:buyer_id => current_user.id).where(:status => 'Paid')
我认为尝试<%= @milestones.amount.inject(:+) %>
,没有工作。
可能是一个超级简单的解决方案,但试图找出如何找到属于“量”整列的总和:总和阵列使用。凡
@milestones = Milestone.where(:buyer_id => current_user.id).where(:status => 'Paid')
我认为尝试<%= @milestones.amount.inject(:+) %>
,没有工作。
当然,它没有工作。在Milestone
的阵列上没有amount
。试试这个:
@milestones.map(&:amount).inject(:+)
考虑:
@milestones = Milestone.where(:buyer_id => current_user.id).
where(:status => 'Paid')
则...
<%= @milestones.sum :amount %>
或者只是:
@milestones_sum = Milestone.where(:buyer_id => current_user.id,
:status => 'Paid'
).
sum(:amount)
而且......
<%= @milestones_sum %>
@milestones
没有一个amount
的方法,因为它不是一个Milestone
- 这是一个ActiveRecord::Relation
或Array
。
您可以试试@milestones.map(&:amount).inject(:+)
,收集和总结Rails应用程序中的所有金额数字。
或者您可以使用@milestones.sum(:amount)
让ActiveRecord为您执行数据库中的计算,这可能会更快/更高效。其他计算也可在ActiveRecord::Calculations::ClassMethods中找到。
在数据库端使用SQL创建总和的和方法吗?如果是这样,那么这可能是最好的方法,因为它会返回更少的数据,并允许数据库在较低的级别上完成工作。 – RHSeeger 2012-01-12 15:58:18
是的,sum是[ActiveRecord :: Calculations]的一部分(http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html)。 – 2012-01-12 22:24:47