Difference between Self joins and self-referential association

self-joins are discussed here:

self-referential association is discussed here:

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