Ruby on rails 如何在ActiveRecord中建立朋友关系模型

Ruby on rails 如何在ActiveRecord中建立朋友关系模型,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个人际关系模型,我希望允许在朋友、家人、邻居等方面建立非定向关系。当你将一个人标记为另一个人的朋友时,他们都是彼此的朋友 Class People id name Class Relationship id person_a_id person_b_id relationship_type 现在,假设我们有一些人员数据记录id=1,2,3,4,5,关系表的外观如下: id person_a_id person_b_id relationship_type

我有一个人际关系模型,我希望允许在朋友、家人、邻居等方面建立非定向关系。当你将一个人标记为另一个人的朋友时,他们都是彼此的朋友

Class People
  id
  name

Class Relationship
  id
  person_a_id
  person_b_id
  relationship_type
现在,假设我们有一些人员数据记录id=1,2,3,4,5,关系表的外观如下:

id  person_a_id  person_b_id  relationship_type
--  -----------  -----------  --------------------
 1     1            2           friend
 2     1            3           neighbor
这告诉我,人1有一个朋友2和一个邻居3。它还告诉我,人2有一个朋友人1,人3有一个邻居人1


我想我可以做一些,但我认为有一个更干净的方法。我是否错过了什么,有一颗宝石在那里,等待着满足我的每一个需求,至少就这个问题而言?或者我必须写一个…

自我参照关联是这里的方法

在我看来,关于这个话题最好的资源就是这个

您的用户模型人物:

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
你的友谊模型关系:

belongs_to :user
belongs_to :friend, :class_name => "User"

自我参照有很多:通过确实是一条路。那么我的总朋友数是反向的朋友+朋友?