2011-03-04 66 views
0

我的友谊模式,并为每一个新的友谊,我创建了两个新纪录:高级友谊模型和查询中的Rails 3

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

我可以检索所有标准人员,如:朋友,友谊,pending_friends ...当我尝试获得普通朋友,朋友的朋友时,情况变得复杂...

现在t Ø得到共同的友谊,我使用类似:

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的一个优雅的方式?

+0

您使用的存储freinds和用户信息的单一模式??? – Ashish 2011-03-04 10:36:35

+0

当然没有。有一个用户和友谊模型 – Alex 2011-03-04 13:36:16

+1

可能的重复[如何在社交网络应用程序的Rails 3中实现友谊模型?](http://stackoverflow.com/questions/5612736/how-to-implement-a-friendship -model式护栏-3-FOR-A-社交网络,applicati) – Tunaki 2016-06-25 17:35:31

回答