Ruby on rails 将外键添加到现有rails模型

Ruby on rails 将外键添加到现有rails模型,ruby-on-rails,Ruby On Rails,我有一个rails 4应用程序 我有两个表,一个用于“范围”,另一个用于“数据”。数据属于范围。我在设置数据时忘记添加外键,现在正试图编写一个迁移来添加外键 我已经创建了一个变更表,但是我编写的迁移不起作用 我不能遵循rails guides示例,因为它与我在设置中的体验不一致(不确定原因) 我的迁移是: class AddFKeyToData < ActiveRecord::Migration def change add_foreign_key :data, :scope

我有一个rails 4应用程序

我有两个表,一个用于“范围”,另一个用于“数据”。数据属于范围。我在设置数据时忘记添加外键,现在正试图编写一个迁移来添加外键

我已经创建了一个变更表,但是我编写的迁移不起作用

我不能遵循rails guides示例,因为它与我在设置中的体验不一致(不确定原因)

我的迁移是:

class AddFKeyToData < ActiveRecord::Migration
  def change

    add_foreign_key :data, :scopes

  end
end
class AddFKeyToData
请你帮我找出问题所在


谢谢

通过以下方式回滚此迁移:

 rake db:rollback
然后进入迁移并编辑
add_foreign…

致:


应该有用

谢谢你,约翰。这是否意味着我不必明确地告诉它它是外键?这是rails的魔力!Rails可以自己识别它!但是您必须确保第一个表被称为
data
,而scope中的键被称为
scope\u id
。100%确定地进入rails项目文件夹并打开
db\schema
!在那里,您可以看到您现有的迁移!如果你不确定的话!只需发布它!很抱歉,您仍然需要在数据模型中添加一点:
属于:范围
并且在范围模型中:
有许多:数据
,然后您可以调用例如
范围。首先。数据
非常感谢John!这里没有魔法。它可能是:
add\u column:data,:scope,:references
更具语义,它实际上描述了它是什么。它确实假定模型中的关联名称为
scope
scopes
,但即使是这样也可以被覆盖(但不推荐)。
add_column :data, :scope_id, :integer