On 7 December 2013 19:23, John Merlino <stoici...@aol.com> wrote:
> 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?

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

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLuOKFb3e4JVoyTtkH0SJDurPSsxSXRwsjsGnPRWXy4pHQ%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to