Has_many with 3 models

Hi,

I have the following 3 models. User , Relationship_type, and Link.

 User

has_many :relationship_types

 Relationship_type

belongs_to :users
has_many :links

  Link

belongs_to :relationship_type

The Link model has a column :partner. I’d like to find all partners
of a user so I’d like to say in User model

has_many :partners
:through => :relationship_type, :link

but that creates errors. How can I do this to be able to say
something like userA.partners .

Similarly, how can I do the reverse, getting all users that link to a
partner , e.g. partnerA.users?

In addition, how can I get to User from Link, to say something like
linkA.user ?

Thanks.

BTW, the partners are of class User. So from users to partners, it’s
many-to-many.
From users to relationship_types, or from relationship_types to links,
it’s one-to-many.
From links to partners, it’s one-to-one.

Thanks.

Learn by Doing wrote:

Hi,

I have the following 3 models. User , Relationship_type, and Link.

 User

has_many :relationship_types

 Relationship_type

Should be RelationshipType.

belongs_to :users
Should be :user.
has_many :links

  Link

belongs_to :relationship_type

The Link model has a column :partner. I’d like to find all partners
of a user so I’d like to say in User model

has_many :partners
:through => :relationship_type, :link

but that creates errors. How can I do this to be able to say
something like userA.partners

You may want to look at the nested_has_many_through plugin.

Similarly, how can I do the reverse, getting all users that link to a
partner , e.g. partnerA.users?

In addition, how can I get to User from Link, to say something like
linkA.user ?

link.relationship_type.user
or you can use :through.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Thanks.

Marnen!

Thank you so much. I’ll take a look at the nested_has_many_through
plugin. I needed your guidance: googling for something like that
without using the technical term “nested” was fruitless.

Vincent.