使用迁移创建连接表
对于 has_and_belongs_to_many
关系特别有用,你可以使用 create_table
方法手动创建连接表。假设你有两个模型 Tags
和 Proyects
,并且你想使用 has_and_belongs_to_many
关系将它们关联起来。你需要一个连接表来关联这两个类的实例。
class CreateProjectsTagsJoinTableMigration < ActiveRecord::Migration
def change
create_table :projects_tags, id: false do |t|
t.integer :project_id
t.integer :tag_id
end
end
end
表的实际名称需要遵循以下约定:按字母顺序排在另一个之前的模型必须先行。 Project 在 Tags 前面,所以表的名称是 projects_tags。
此外,由于此表的目的是路由两个模型的实例之间的关联,因此不需要此表中每个记录的实际 ID。你通过传递 id: false
来指定它
最后,正如 Rails 中的惯例一样,表名必须是单个模型的复数复数形式,但表的列必须是单数形式。