创建连接表时,是否需要在单个表中使用外键声明?

时间:2016-03-03 00:16:03

标签: ruby-on-rails rails-migrations model-associations

我有一个名为content_roles的“contents”和“roles”的连接表,这是连接表。

class CreateContentRoles < ActiveRecord::Migration
  def change
    create_table :content_roles, :id => false do |t|
      t.belongs_to :content, foreign_key: "content_id"
      t.belongs_to :roles, foreign_key: "role_id"
    end
    add_index :content_roles, ["content_id", "roles_id"]
  end
end

因此,在各个角色和内容迁移中,我是否需要有一个返回连接表和/或角色/内容的foreign_key?对不起,我没有更好地解释这一点。

2 个答案:

答案 0 :(得分:1)

为什么你不能使用如下所示的引用

class CreateContentRoles < ActiveRecord::Migration
 def change
  create_table :content_roles, :id => false do |t|
    t.references :content, index: true, foreign_key: true
    t.references :roles, index: true, foreign_key: true

    t.timestamps null: false
  end
 end
end

答案 1 :(得分:0)

idcontent表中的roles列充当外键。 Rails使用content表中的content_rolesid表中的content加入content_idcontent_roles表。 rolescontent_roles表也是如此。