0

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

  • 用户 1 和朋友 1
  • 朋友 1 和用户 1

我可以检索所有标准人员,例如:friends、friends、pending_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 

我也可以使用完整的查询,finder_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 中以优雅的方式做到这一点?

4

1 回答 1

0

看看这个问题的答案:

如何在 Rails 3 中为社交网络应用程序实现友谊模型?

于 2011-04-19T06:29:28.033 回答