Please use "real" names in your examples as it helps us to provide
more accurate information. For example, I don't know what kind of
association table2 has with table1, so I've treated it as a belongs_to.
Here's what I have for my code.
Users
Committees
I want to find all of the active users and then from there, get all of
the committees that each person is on.
So do I need to set up the has_many and belongs_to relationships for
these models?
Secondly, I am easily able to make the first piece of code work.
You need to relate the tables in the database, as well as in Rails.
So make sure your committees table has a user_id column. Then, a
committee can belong to a user.
However, if you really have a many-to-many relationship, then a join
table might work best. Check out the Rails API docs on the
has_many :through option for how to set that up. In short, you create
new table that relates users to committees. So once you have a user
object, you can just do user.committees.
But I'm not able to make the second part of this work to get the list of
committees for each user.
Well, of course not. :include => "committees" is going to expect that
the two tables are associated, which as you mentioned they are not. How
is Rails supposed to find the "committees" association of you didn't
specify it?
It sounds to me like the two tables (users and committees) SHOULD be
associated anyway. Is there some reason they are not?
class User <A ctiveRecord::Base
has_many :comittees
end
class Comittee < ActiveRecord::Base
belongs_to :user
end
Should a committee be comprised of only one user? That's what you have
with this. If a committee is really comprised of n users, you need to
use a has_many :through. Off the side of my head, it's something like
class User
has_many :committee_members
has_many :committees, :through => :committee_members
end
class Committee
has_many :committee_members
has_many :users, :through => :committee_members
end
class CommitteeMember
belongs_to :committee
belongs_to :user
end
Then you can go both ways. You can get a list of committees for a
particular user or a list of users for a particular committee. And,
since it's a has_many :through, you can put attributes on
committee_members that relate specifically to that user's membership in
the committee (such as is_chair or something).