假设用户A连接到B,则自动认为用户B与用户A连接。
User
has_many
connection
连接表:
id, user_id, connected_user_id
说
id || user_id|| connected_user_id
1 || 1 || 2
2 || 3 || 1
3 || 2 || 3
预期结果:
User.find(1).connections
并[d用户ID:2,...>,<用户ID:3,...> ]
User.find(2).connections
并[d用户ID:1,...>,<用户ID:3,...>]
答案 0 :(得分:0)
如果你需要多对多的关系,听起来就是这样,你可以设置一个has_many through relationship:
class User < ApplicationRecord
has_many :connections
has_many :connected_users, through: :connections
end
class Connection < ApplicationRecord
belongs_to :user
belongs_to :connected_user, class_name: "User"
end
然后找到您想要的所有连接,您可以在User类中创建一个方法:
def get_connections
User.find(Connection.where(user_id: self.id).connected_user_ids + Connection.where(connected_user_id: self.id).user_ids)
end
User.find(1).get_connections
应该返回
并[d用户ID:2,...&gt;,&lt;用户ID:3,...&gt; ]