我不认为你可以定义一个共同的朋友协会。所以,让我们看一个共同的朋友类方法或范围。
我假设我们想要我们所有的朋友,我们是他们的朋友。
class User
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
def mutual_friends
inverse_friends.joins(:friendships).where("friendships.user_id = users.id and friendships.friend_id = :self_id", :self_id => id).all
end
end
要将其作为关联进行,这将是您要尝试做的事情:
has_many :mutual_friends,
:through => :inverse_friendships,
:source => :user,
:conditions => ["friendships.user_id = users.id and friendships.friend_id = :self_id", :self_id => id]
问题在于 has_many :mutual_friends 关联定义中的 id 方法调用。