Suming total spend


#1

Hi

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!

Darren


#2

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’ => @cust.id})

David


#3

Thanks!

That’s done the trick perfectly.