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!

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.