アクティブレコードで自己参照関係を作成するために、rails-cast#163 http://railscasts.com/episodes/163-self-referential-associationに示されている自己参照モデルに従いましたが、これは好きではありません。モデルは、friendshipとinverse_friendshipsを作成する必要があるため、次のようなことはできません。
私のperson.rbで
class Person
has_many :friendships
has_many :friendships, :foreign_key => "friend_id"
has_many :friends, :through => :friendships
has_many :friends, :through => :friendships, :source => :person
end
そして私のfriendship.rbで
class Friendship
belongs_to :person
belongs_to :friend, :class_name => "Person"
end