我发现了一种在 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/