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