Assuming you are developing in Rails then the convention would be for the models to be Task and Entry, with the controllers tasks_controller and entries_controller.
If I have understood the problem correctly I think the first thing I would do is provide a method in model Task called duration that returns the total duration for that task by summing task.entries.time. Then all you need to pass to the report view is @tasks containing the tasks you are interested in and for each one task.duration is available to be displayed as desired.
If I have understood the problem correctly I think the first thing I
would
do is provide a method in model Task called duration that returns the
total
duration for that task by summing task.entries.time. Then all you need
to
pass to the report view is @tasks containing the tasks you are
interested in
and for each one task.duration is available to be displayed as desired.
Rails also provides aggregate functions so rather than writing a
duration method you could also write:
task = Task.find(:first)
task.entries.sum(:time)
Line 2 generates the following SQL:
SELECT sum("entries".time) AS sum_time FROM "entries" WHERE
("entries".task_id = 1)
If I have understood the problem correctly I think the first thing I
would
do is provide a method in model Task called duration that returns the
total
duration for that task by summing task.entries.time. Then all you need
to
pass to the report view is @tasks containing the tasks you are
interested in
and for each one task.duration is available to be displayed as desired.
Rails also provides aggregate functions so rather than writing a
duration method you could also write:
task = Task.find(:first)
task.entries.sum(:time)
I would still suggest having a duration method, where the method just returns entries.sum(:time), as it removes the requirement that the caller needs to know that how to work out the duration.