[Newb] Adding database fields to get a total

Total newb here, as I've been working my way threw the tutorial, but
doing my own thing.
I've created a fairly simple app, that has a bunch of items. Each
item has 6-9 fields that have a cost associated with them (db field =
float). Think of each item as a car maintenance log, oil change =
$50.00, tires = 500, breaks = 230 etc.. I want to be able to add up
all the fields associated with the item for a grand total.

I've read a lot and I"m not sure if I'm modifying the model, or coming
up with something fancy in the controller etc..

Any help with my baby steps is much appreciated.

THx

Create a virtual attribute in the model that returns the grand total.

def grand_total
  field_1 + field_2 ...
end

You can then reference grand_total from your views like any other
attribute.

I'd suggest keeping that logic in the model...maybe create a method on
your model for getting "grand_total".

This blog post should give you a better idea of why you'd want this
kind of logic in the model:

http://railstips.org/2008/12/30/move-it-to-the-model-and-use-tiny-methods

KR wrote:

Total newb here, as I've been working my way threw the tutorial, but
doing my own thing.
I've created a fairly simple app, that has a bunch of items. Each
item has 6-9 fields that have a cost associated with them (db field =
float). Think of each item as a car maintenance log, oil change =
$50.00, tires = 500, breaks = 230 etc.. I want to be able to add up
all the fields associated with the item for a grand total.

I've read a lot and I"m not sure if I'm modifying the model, or coming
up with something fancy in the controller etc..

Any help with my baby steps is much appreciated.

THx

You -could- do it this way:

Table item
... list of items

Table work_done
... list of things done

Table work_done_on_items
... item_id and work_done_id

And you could then just run a simple query for the sum of all the things
associated with that item.. Or if you really wanted to, put the 'total'
in the 'item' table and then you'd have to do "on_change" on the other
table so it updates the total every time an item is added, removed, or
changed...

hope this helps.

Sweet thanks it worked. Not so bad after all!

Some good replies already, but I'd add that you almost certainly want
to avoid float fields for money. They are OK for some things, but
people get twitchy when money doesn't add up exactly. You're probably
better off either using decimal fields or just storing values in
integer cents.

--Matt Jones