轨。对集合的特定属性求和

时间:2012-05-21 20:41:05

标签: ruby-on-rails ruby

我有一张发票清单......

@invoices_1_week = Invoice.order("due_date DESC").where("status != 'paid' AND due_date >= ? AND due_date < ?", Date.today, 1.week.from_now)

发票模型具有总属性。如何在@ invoice_1_week集合中获得总计的总和?

我知道我可以在这样的视图中做到这一点......

<% week_1_total = 0 %>
<% @invoices_1_week.each do |invoice| %>
  <% week_1_total = week_1_total + invoice.total %>
<% end %>
<%= week_1_total %>

但我想知道是否有更多的Railsy方法。

2 个答案:

答案 0 :(得分:22)

这是一种Rails方式,使用ActiveRecord的sum方法:

@invoices_1_week.sum("total")

Here是文档。

答案 1 :(得分:0)

您可能要考虑使用符号符号

@invoices_1_week.sum(:total)

或使用单引号

@invoices_1_week.sum('total')

在两种情况下,属性名称都是不可变的。