Ruby on Rails下同一列中2个表之间的2个关系的问题

时间:2011-03-07 22:28:27

标签: ruby-on-rails database-design activerecord foreign-key-relationship

我有一个疑问,我在Ruby on Rails网站上建立了一个朋友的平台;我有一个名为用户的表格,以及一个名为朋友的表格,用于管理用户之间的友谊。在朋友中,我有2个字段,* user_id1 *和* user_id2 *。这是我在模型中建立的关系:

class User < ActiveRecord::Base
    has_many :friends
end
class Friend < ActiveRecord::Base
    belongs_to :user, :foreign_key => "user_id1"
    belongs_to :user, :foreign_key => "user_id2"
end

这是处理这种情况的好方法吗?另一个想法是创建另一个模型,指向数据库中的同一个表, userAux ,并将其用于关系。你认为最好的是什么?你有更好的主意吗?

提前致谢。

2 个答案:

答案 0 :(得分:4)

自引用多对多结构通常称为物料清单。这是一个非常好的主意,并且在关系数据库中非常常用。这是Data Model。您将拥有布尔属性,例如IsAcceptedIsRejected

请不要将列命名为user_id1, 2。请将其称为实际有意义的内容,例如host_idguest_idrequester_idfriend_id。只有当你编码时,这种相关性才会变得清晰。

不熟悉关系建模标准的读者可能会发现IDEFIX Notation有用。

答案 1 :(得分:1)