Rails关系表,来自同一个表的多个id

时间:2010-06-04 22:21:58

标签: ruby-on-rails activerecord

我知道如果我在表中命名一个列“othertablename_id”rails会知道将该列用于belongs_to或其他关系。如果我想从同一个表中拥有多个id,显然这不起作用,因为我会有重复的列名。构建一个与同一个表中的两行相关的表的最佳方法是什么?与约会中仅有两个用户的约会表一样。

2 个答案:

答案 0 :(得分:6)

啊,我有它

belongs_to :user_1, :class_name => "User"
belongs_to :user_2, :class_name => "User"

将分别使用user_1_id和user_2_id列。当然,列应该被命名为更具描述性的东西,但它非常简单。

答案 1 :(得分:0)

像这样的模型:

Appointment 
=================
source_user_id
object_user_id

会有帮助吗?

编辑在第361页阅读rails bible,我提取了这个:

  

多对多关系

     

......一个产品可以属于很多   类别,每个类别可以   包含多个产品。这是个   多对多的例子   关系。就好像每一面都好   这个关系包含一个集合   另一方面的物品。

alt text http://img180.imageshack.us/img180/4004/dibujolfa.png

  

在Rails中,我们通过添加来表达这一点   has_and_belongs_to_many声明到   两种型号。从现在开始,我们将会   将此声明缩写为   “habtm。”多对多的协会是   对称 - 两个连接表   宣布他们与每个人的关联   其他使用“habtm。”

     

在数据库中,多对多   使用a实现关联   中间连接表。这包含   连接两者的外键对   目标表。 Active Record假定   这个连接表的名称是   两个目标表的串联   名称按字母顺序排列。在我们的   例如,我们加入了这个表   表产品的类别,所以   Active Record将寻找加入   表名为categories_products。

所以,我认为你所要做的就是使用 has_and_belongs_to_many 声明。