使用遷移建立連線表

對於 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 中的慣例一樣,表名必須是單個模型的複數複數形式,但表的列必須是單數形式。