2012-05-21 20 views
7

tengo una lista de facturas ...Rieles. Resumiendo un atributo específico de una colección

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

El modelo de facturas tiene un atributo total. ¿Cómo puedo obtener una suma de los totales en la colección @ invoice_1_week?

sé que puedo hacerlo en la vista como esta ...

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

Pero yo estoy preguntando si hay una manera más Railsy de hacerlo.

+0

Uso Active Record – leonel

+0

nunca debe escribir código como este en una vista, mueva cualquier lógica a helper o modelos (dependiendo de su naturaleza). – tokland

Respuesta

19

Aquí está una manera rieles, utilizando el método de ActiveRecord sum:

@invoices_1_week.sum("total") 

Here son los docs.

+0

¿Cómo se permiten valores NIL o NULL en la colección? –

Cuestiones relacionadas