使用迁移创建连接表

对于 has_and_belongs_to_many 关系特别有用,你可以使用 create_table 方法手动创建连接表。假设你有两个模型 TagsProyects,并且你想使用 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 中的惯例一样,表名必须是单个模型的复数复数形式,但表的列必须是单数形式。