Suming total spend


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) @cust.appointments[0].treatments.sum(:price)

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!


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' =>})



That's done the trick perfectly.