我尝试实现一个简单的应用程序,我有用户,我从社交网络获得用户友谊。我有两个模型,包含以下列:
User
:
id
(默认ID)sn_id
(来自社交网络中用户的ID) FriendsRelation
:
user1_sn_id
(User.sn_id
的外键)user2_sn_id
(User.sn_id
的外键)如何实施协会?
现在我在用户上写道:
has_many :friends1, :class_name =>"FriendsRelation", :foreign_key =>"user1_sn_id"
has_many :friends2, :class_name =>"FriendsRelation", :foreign_key =>"user2_sn_id"
问题在于,如果我想要获得用户的所有朋友,我必须使用u.friends1
和u.friends2
,但如何摆脱不测量?
我应该将哪些关联放在FriendsRelation上?
此外,FriendsRelation表中的用户ID是来自社交网络的用户ID,因为它对我来说更容易。这是个问题吗?我应该改为使用用户ID吗?
答案 0 :(得分:1)
使用您自己的id
代替素数键不是问题。只确保没有重复并为该列添加索引。
关于分散度,您有多种解决方案:
def friends; friends1 + friends2; end
所有都有利弊,但都是有效的解决方案AFAIK。