当我们使用has_many_and_belongs_to
时,还会创建另一个包含两个表的id的表。此表自动生成另一个名为row_id
的列,但对于其他表,此列名为id
。那是为什么?
答案 0 :(得分:1)
当您使用has_many_and_belongs_to
时,您的联接表就是 - 连接表
<强> has_and_belongs_to_many 强>
这种关联的设计是,它只需要引用可比较的关联(在你的另外两个模型中),因此不需要任何主键:
所有关于relational databases中的foreign_keys
和primary_keys
。关系数据本质上意味着您可以访问其他相关表中的数据。 Rails(以及任何其他关系系统)识别此数据的方式是使用foreign_keys
(row_id
)
<强> has_many :through 强>
如果您使用has_many :through
,则需要指定primary_key
(id
),因为它有自己的模型,如下所示:
这意味着您可以直接引用has_many :through
条记录,也可以引用关系数据。这完全取决于primary_keys
和foreign_keys