Ruby on Rails 使用迁移创建联接表

示例

对于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

表的实际名称必须遵循此约定:必须按字母顺序在另一个模型之前进行建模。P roject preceds牛逼AGS所以表的名称是projects_tags。

同样,由于此表的目的是在两个模型的实例之间路由关联,因此该表中每个记录的实际ID都是不必要的。您通过传递来指定id: false

最后,按照Rails的约定,表名必须是各个模型的复数形式,但是表的列必须是单数形式。