我有友谊模式,我为每一个新的友谊创造了两个新记录:
- User1 and Friend1
- Friend1 and User1
I can retrieve all standard staffs like: friends, friendships, pending_friends... The situation becomes complicated when I try to get common friends, friends of friends...
现在,为了获得共同的友谊,我使用了如下一些东西:
has_many :common_friendships, :class_name => Friendship , :conditions=> friendships.user_id = #{self.id} do
def common_with(friend)
joins("inner join friendships fl2 on friendships.friend_id = fl2.user_id").where("fl2.friend_id = #{friend.id}")
end
end
Also I can use full query with finder_sql
like:
select distinct *
from friendships fl1
inner join friendships fl2 on fl1.friend_id = fl2.user_id
where fl1.user_id = 1 and fl2.friend_id = 2
我怎么能够这样做?