为什么has_many_and_belongs_to表id被命名为rowid

时间:2014-01-07 03:47:58

标签: ruby-on-rails

当我们使用has_many_and_belongs_to时,还会创建另一个包含两个表的id的表。此表自动生成另一个名为row_id的列,但对于其他表,此列名为id。那是为什么?

1 个答案:

答案 0 :(得分:1)

当您使用has_many_and_belongs_to时,您的联接表就是 - 连接表


<强> has_and_belongs_to_many

这种关联的设计是,它只需要引用可比较的关联(在你的另外两个模型中),因此不需要任何主键:

enter image description here

所有关于relational databases中的foreign_keysprimary_keys。关系数据本质上意味着您可以访问其他相关表中的数据。 Rails(以及任何其他关系系统)识别此数据的方式是使用foreign_keysrow_id


<强> has_many :through

如果您使用has_many :through,则需要指定primary_keyid),因为它有自己的模型,如下所示:

enter image description here

这意味着您可以直接引用has_many :through条记录,也可以引用关系数据。这完全取决于primary_keysforeign_keys