2016-08-08 3 views
0

두 모델이 있습니다. Events 모델 및 EventOption. Eventshave_many:event_options입니다.Rails5 - 포스트 그레스의 기존 모델에 외래 키 추가

내 문제를 내가 add_foreign key :event_options, :events로 마이그레이션을하려고 할 때 나는 그들을 연결할 수 있도록하는 것이, 나는 다음과 같은 오류 얻을 수있다 :

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 
: 여기
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의를

나는 콘솔에서 볼 수 있기 때문에 작동하는 id 컬럼을 알고있다. 나는 앱을 위해 일하는 외래 키들을 얻으려고 무언가를 여기에서 놓치고 있다는 것을 알고 있지만, 내 인생에서 무엇이 있는지 모른다.

+0

'달리'has_many'했던 하나 –

답변

4

잠깐, 당신은 혼란스럽게 add_foreign_key이 아닌 has_many에 대한 외래 키 옵션을 의미합니다. 외래 키 제약 조건을 추가합니다.

그래서 마이그레이션에 당신은, 당신의`event_options` 테이블이 필요 event_id` add_column 또는 add_reference

이 원하는
add_reference :event_options, :event, index: true 
add_foreign_key :event_options, :events 
+0

작동하지 않습니다 할 필요가 그것! 그리고 내가 어떻게 작동 하는지를 이해하기 위해서 (나는 이것을하기 전에 생각했지만 누가이 시점에서 알았 겠는가?), event : id : event_options의 : id 열에 다음을 추가 할 수있다. 연결될거야, 그렇지? – GeekFitness

+0

@ GeekFitness yep. –