Re: Active record question

Thanks Phlip -

Thanks for the response - I’ll play around with your suggestions.

What I was trying to do was something like this project.appointments to
display all the appointments for a specific project.

The way I have it set up is that a project has many tasks, each task can
have many resources (people) and each resource then has appointments.
I’m not sure this is the best way to model but I thought it would be
easier just keeping one reference to the project_id in the tasks table
rather then trying to manage all the links back up to the projects table
from the resources and appointments tables. Maybe a bad design
decision??

----- Original Message ----
From: Phlip [email protected]
To: [email protected]
Sent: Saturday, September 6, 2008 8:52:49 PM
Subject: [Rails] Re: Active record question

Mark S. wrote:

Where project_id = 1;
Why is project joined in, if project_id comes from tasks?

And why is resources joined in? for its data? It does not participate in
the
links, right?

I can get all the Resources for a project using this but can not get the
appointments. I could loop through the resources getting all the
appointmen ts and tracking them, but that doesn’t seem like the right
way to do it. I could also use find_by_sql, but again, that does’t seem
right.

class Project < ActiveRecord::Base
has_many :tasks
belongs_to :customer
has_many :resources, :through => :tasks

Appointment.find( :all, :include => :tasks,
:conditions => { :‘tasks.project_id’ => 1} )

In summary, provide enough :has_many => :through to get to the keying
table,
then put it into your :include and :conditions.

Warning: :include will eager-load, which might slow you down with
irrelevant data.

Alternately…

Task.find_all_by_project_id(1).map(&:appointments).uniq

(-:


Phlip

Mark S. wrote:

What I was trying to do was something like this project.appointments to
display all the appointments for a specific project.

Briefly, since you seem to have more experience with raw SQL than
ActiveRecord
(better than the other way around!;), try inspect_sql to see what you
are
getting as you tune this.

But I should let someone else take a crack at the data model question
now.


Phlip