ruby-on-rails - ActiveRecord::Migration 的 create_join_table 的行为是什么?

标签 ruby-on-rails activerecord jointable

我发现了一种在 Rails 应用程序中为我的 HABTM 关系生成连接表的好方法。

rails g migration CreateJoinTable table1 table2

这会生成一个 ActiveRecord::Migration采用该方法的create_join_table
我想知道这个奇妙的神秘方法是做什么的。我猜它制作了一个表(可能没有 id 字段),其中有一列用于 table1 外键和一列用于 table2 外键,但该表是否有任何其他功能?。我对连接表的习惯一直是在这两列中添加唯一索引,以便 table1 中的记录和 table2 中的记录之间的关系不能输入两次。

我的问题归结为:如果我使用 create_join_table我是否需要继续添加该唯一索引,或者这种方法是否为我这样做(我认为应该这样做)?

documentation I usually look at不涉及这种细节。

最佳答案

无任何阻塞地调用,create_join_table只需创建一个带有两个外键的表,这些外键引用了两个连接的表。

但是,当您调用该方法执行任何其他操作(例如,添加索引)时,您实际上可以传递一个块。从 Rails 文档:

create_join_table :products, :categories do |t|
  t.index :product_id
  t.index :category_id
end

看看 create_join_table documentation .

您可以查看 create_join_table底部的代码(点击 来源:显示 )。

关于ruby-on-rails - ActiveRecord::Migration 的 create_join_table 的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201949/

相关文章:

ruby-on-rails - 在 Rails 中命名 bool 列

ruby-on-rails - [13] :Array 的未定义方法 `assign_attributes'

ruby-on-rails - Ruby 中的 bool 值

ruby-on-rails - 删除所有者时从记录中删除引用 ID

Ruby activerecord 结果到数组

ruby-on-rails - 在 rails 中使用复合键连接表

Grails addTo 重复项

ruby-on-rails - 如何在自定义 Rails 引擎 gem 中加载正确版本的动态库和 gem(libxml、Nokogiri)?

arrays - Yii-如何从事件记录中获取值数组

hibernate - 将 Grails 域类映射到 joinTable 的问题