有没有办法将列更改为外键?
Is there a way to change column to foreign key?
我在名为 contents 的 table 中有一个现有的列 project_id
。它应该是引用项目 table 中的项目的 foreign_key。但是,设置数据库的人创建了内容 table 而没有将 project_id 设置为 foreign_key.
我尝试将迁移创建为:
def change
add_reference :contents, :project
end
但这会尝试添加一个已存在的列 project_id
。
我的问题是,有没有办法(使用迁移)将列 project_id
更改为 foreign_key?
你可以试试
add_foreign_key :contents, :projects, column: :project_id
详情请参考here
Rails 5+ 允许您添加 foreign_key
constraints using migration
add_foreign_key :contents, :projects, column: :project_id, #primary_key: "id"
除此之外,您不需要 ActiveRecord 的外键约束来正确映射迁移中的关系,即 foreign_key
约束也可以在模型级别显式设置。使用迁移
在 project_id
上进行更快的检索 add indexing
示例-
class Content < ApplicationRecord
belongs_to :project, class_name: 'Project', :foreign_key => "project_id"
end
class Project < ApplicationRecord
has_many :contents, class_name: 'Content', :foreign_key => "project_id", :dependent => :destroy
end
我在名为 contents 的 table 中有一个现有的列 project_id
。它应该是引用项目 table 中的项目的 foreign_key。但是,设置数据库的人创建了内容 table 而没有将 project_id 设置为 foreign_key.
我尝试将迁移创建为:
def change
add_reference :contents, :project
end
但这会尝试添加一个已存在的列 project_id
。
我的问题是,有没有办法(使用迁移)将列 project_id
更改为 foreign_key?
你可以试试
add_foreign_key :contents, :projects, column: :project_id
详情请参考here
Rails 5+ 允许您添加 foreign_key
constraints using migration
add_foreign_key :contents, :projects, column: :project_id, #primary_key: "id"
除此之外,您不需要 ActiveRecord 的外键约束来正确映射迁移中的关系,即 foreign_key
约束也可以在模型级别显式设置。使用迁移
project_id
上进行更快的检索 add indexing
示例-
class Content < ApplicationRecord
belongs_to :project, class_name: 'Project', :foreign_key => "project_id"
end
class Project < ApplicationRecord
has_many :contents, class_name: 'Content', :foreign_key => "project_id", :dependent => :destroy
end