Ryan Bates の asciicast を例にとると: http://asciicasts.com/episodes/163-self-referential-association
彼は User の 2 つの関連付けで終了します。
- :友達
- :inverse_friends
ユーザーが誰が友情を開始したかを気にしないことを考えると、単純な User アソシエーションが必要になります。
- :友達
両方の関係で構成されていました。すなわち、ユーザーによって扇動された関係と、ユーザーの友人によって扇動された関係です。
では、この双方向の自己参照関連をどのように実現できるのでしょうか?
更新 - Josh Susser がこれについて投稿しています: http://blog.hasmanythrough.com/2006/4/21/self-referential-through
ただし、実際にはソースとシンクの両方を含む has_many :nodes が必要な場合でも、 has_many :sources と has_many :sinks について説明しています。