Difference between Self joins and self-referential association

self-joins are discussed here:
http://guides.rubyonrails.org/association_basics.html#self-joins

self-referential association is discussed here:
http://railscasts.com/episodes/163-self-referential-association

The main difference I see is that self-referential association creates a
join model, such as friendship, which links another model, such as user,
to
itself, so a user can have many friends (which are other users), and a
friend can be befriended by a user. The self-joins looks like there is
no
join model. Simply a foreign key is added to the same model, such as a
manager_id column to the employee model. An employee, who is a manager,
can
have many other employees, who are subordinates. And the link is done on
the same table itself, association the employee manager_id column with
the
the employee id column. To me, these two techniques look virtually the
same. Is there a difference and which is preferred?

On 7 December 2013 19:23, John M. [email protected] wrote:

join model. Simply a foreign key is added to the same model, such as a
manager_id column to the employee model. An employee, who is a manager, can
have many other employees, who are subordinates. And the link is done on the
same table itself, association the employee manager_id column with the the
employee id column. To me, these two techniques look virtually the same. Is
there a difference and which is preferred?

With a join model the relationship is symetrical. Each user can have
many friends and can be the friend of many other users, similar to a
has_and_belongs_to_many association. With the self referential
association you describe, a manager can have many employees but an
employee can belongs to only one manager (like a has_many, belongs_to
association). So which one to use depends on the requirements.

Colin

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs