[英]What is the best way to model a symmetric relation with ruby on rails?
我正在寻找一种在Rails中建模对称关系 (如用户之间的友谊)的优雅方法(尽管这可能更像是一个一般的数据库问题)。 我知道几种方法,但似乎都不太优雅:
用用户的外键创建一个user_user关系表。 我不喜欢它,因为它本质上是一个非对称解决方案。 我看到了一种方法,该方法将具有较低ID的用户强制进入第一列,而另一用户强制进入第二列,并使用union从两端查询关系。 感觉就像是骇客。
创建一个友谊表,其中每一行代表一个关系,并且:
这种方法的问题在于,它看起来很麻烦,而且也没有任何东西可以强制2个用户完全共享友谊。
我希望有比这些更好的解决方案。 有任何想法吗?
我将创建一个模型Friendship,其中包含可以进行验证的朋友用户的外键,以确保仅通过执行以下操作即可与同一用户建立一个朋友关系:
validates :friend_id, :uniqueness => { :scope => :user_id }
我认为这是一个非常优雅的解决方案,具有很大的灵活性。 检出HAS_ONE:通过在轨协会指导指南活动记录关联 ,如果你要像友谊建模。
当然,还有has_and_belongs_to_many关联。 但是,它提供的灵活性不如创建模型那样灵活,因此通常不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.