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?

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.