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