可能是一个超级简单的解决方案,但试图弄清楚如何找到属于的“金额”整数列的总和:
@milestones = Milestone.where(:buyer_id => current_user.id).where(:status => 'Paid')
我在视图中尝试了<%= @milestones.amount.inject(:+) %>
,但没有效果。
答案 0 :(得分:5)
假设:
@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 %>
答案 1 :(得分:3)
当然,它没有用。 amount
的数组上没有Milestone
。试试这个:
@milestones.map(&:amount).inject(:+)
答案 2 :(得分:2)
@milestones
没有amount
方法,因为它不是Milestone
- 它是ActiveRecord::Relation
或Array
。
您可以尝试@milestones.map(&:amount).inject(:+)
,收集并汇总Rails应用程序中的所有金额数字。
或者您可以使用@milestones.sum(:amount)
让ActiveRecord为您在数据库中执行计算,这可能更快/更有效。其他计算也可在ActiveRecord::Calculations::ClassMethods中找到。