Ruby on rails Rails 3中的高级友谊模型和查询

Ruby on rails Rails 3中的高级友谊模型和查询,ruby-on-rails,social-network-friendship,Ruby On Rails,Social Network Friendship,我有一个友谊模型,对于每一个新的友谊,我都会创造两个新的记录: User1和Friend1 Friend1和User1 我可以检索所有标准员工,如:朋友、朋友、待办朋友。。。当我试图结交普通朋友,朋友的朋友时,情况变得复杂了 现在,为了获得普通的友谊,我会使用以下方法: has_many :common_friendships, :class_name => 'Friendship', :conditions=>'friendships.user_id = #{self.id}'

我有一个友谊模型,对于每一个新的友谊,我都会创造两个新的记录:

  • User1和Friend1
  • Friend1和User1
我可以检索所有标准员工,如:朋友、朋友、待办朋友。。。当我试图结交普通朋友,朋友的朋友时,情况变得复杂了

现在,为了获得普通的友谊,我会使用以下方法:

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 
此外,我还可以将完整查询与
finder\u sql
结合使用,如:

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

如何在Rails 3中以优雅的方式做到这一点?

查看关于这个问题的答案:


您是否使用单一型号存储朋友和用户信息???当然不是。有一个用户和一个可能的副本