Ruby on rails Rails5-向postgres中的现有模型添加外键

Ruby on rails Rails5-向postgres中的现有模型添加外键,ruby-on-rails,ruby,postgresql,ruby-on-rails-5,Ruby On Rails,Ruby,Postgresql,Ruby On Rails 5,我有两个模型。事件模型和事件选项。事件将有许多:事件选项 我的问题是,当我尝试迁移到add_外键:event_选项,:events以便将它们链接起来时,会出现以下错误: ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "event_id" referenced in foreign key constraint does not exist : ALTER TABLE "event_options" ADD

我有两个模型。
事件
模型和
事件选项
事件
有许多
:事件选项

我的问题是,当我尝试迁移到
add_外键:event_选项,:events
以便将它们链接起来时,会出现以下错误:

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "event_id" referenced in foreign key constraint does not exist
: ALTER TABLE "event_options" ADD CONSTRAINT "fk_rails_3995702fad"
FOREIGN KEY ("event_id")
  REFERENCES "events" ("id")
这是我的schema.rb:

ActiveRecord::Schema.define(version: 20160806001743) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "event_options", force: :cascade do |t|
    t.datetime "created_at",  null: false
    t.datetime "updated_at",  null: false
    t.float    "price"
    t.text     "description"
    t.string   "name"
  end

  create_table "events", force: :cascade do |t|
    t.datetime "created_at",                null: false
    t.datetime "updated_at",                null: false
    t.string   "name"
    t.boolean  "active",     default: true
  end

  create_table "users", force: :cascade do |t|
    t.datetime "created_at",                     null: false
    t.datetime "updated_at",                     null: false
    t.string   "email",                          null: false
    t.string   "encrypted_password", limit: 128, null: false
    t.string   "confirmation_token", limit: 128
    t.string   "remember_token",     limit: 128, null: false
    t.index ["email"], name: "index_users_on_email", using: :btree
    t.index ["remember_token"], name: "index_users_on_remember_token", using: :btree
  end

end

我知道有:id列可以工作,因为我可以在控制台中使用它们。我知道我在这里遗漏了一些东西来让应用程序的外键工作,但对于我来说,我不知道是什么。

等等,你是说has\u many的外键选项,这不是
add\u Foreign\u key
让人困惑的地方。它添加了外键约束

因此,在迁移过程中,您需要首先执行
add_column
add_reference

add_reference :event_options, :event, index: true 
add_foreign_key :event_options, :events

等等,您的意思是has\u many的外键选项,这不是
add\u foreign\u key
所做的令人困惑的事情。它添加了外键约束

因此,在迁移过程中,您需要首先执行
add_column
add_reference

add_reference :event_options, :event, index: true 
add_foreign_key :event_options, :events

它需要
event\u id
您需要在
event\u options
表中设置该id,否则
有很多
将无法正常工作它需要
event\u id
您需要在
event\u options
表中设置该id,否则
有很多
将无法正常工作!为了确保我理解它是如何工作的(我想我之前是这样做的,但现在谁知道呢?),我可以将:events的:id列中的任何内容添加到:event_id of:event_选项中,这些选项将被链接,对吗?就是这样!为了确保我理解它是如何工作的(我想我之前是这样做的,但现在谁知道呢?),我可以将:events的:id列中的任何内容添加到:event的:event\u id选项中,这些选项将被链接,对吗?