Forum: Ruby on Rails Suming total spend

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Ruby on Rails: Talk (Guest)
on 2009-03-26 16:03
(Received via mailing list)

I have an application with a number of models. The one's I'm
interested in are customers, who have appointments. Each appointment
has a number of treatments associated.

I'm trying to calculate the total amount spent by the customer on
treatments over all the appointments.

@cust = Customer.find(1)

The above works for just the first appointment found. But how to I get
it to sum across all appointments?

I've tried something like:

@total = @cust.appointments.sum{|u| u.treatments.sum(:price)}

But to no avail.

Any help would be gratefully appreciated!

David T. (Guest)
on 2009-03-26 17:31
(Received via mailing list)
How about using sum conditions / includes to do it all in one SQL
query.  Something like:

@total = Treatment.sum(:price, :include => :appointment, :conditions
=> {'appointments.customer_id' =>})

Ruby on Rails: Talk (Guest)
on 2009-03-26 17:44
(Received via mailing list)

That's done the trick perfectly.
This topic is locked and can not be replied to.