0

저는 Postgres 9.5에서 Rails 5를 사용하고 있습니다. 그래서 나는이 마이그레이션 Rails 5 마이그레이션에서 계단식 삭제 제약 조건을 가진 외래 키를 작성하려면 어떻게해야합니까?

class CreateSearchCodeTable < ActiveRecord::Migration[5.0] 
    def change 
    create_table :search_codes do |t| 
     t.string :code 
     t.references :address, type: :string, index: true, foreign_key: true, on_delete: :cascade 
     t.index ["code"], name: "index_search_codes_on_code", unique: true, using: :btree 
    end 
    end 
end 

그러나 무엇 작성되는 것은 다음은 만들어 내 search_codes 테이블에서 내 주소 테이블에 외래 키를 만들려고합니다. 제약의 계단식 부분은 내가 레일 5 마이그레이션 및 포스트 그레스를 사용하여 계단식 외래 키 제약 조건 마이그레이션을 만들려면 어떻게해야합니까

myapp=> \d search_codes; 
           Table "public.search_codes" 
    Column |  Type  |       Modifiers 
------------+-------------------+----------------------------------------------------------- 
id   | integer   | not null default nextval('search_codes_id_seq'::regclass) 
code  | character varying | 
address_id | character varying | 
Indexes: 
    "search_codes_pkey" PRIMARY KEY, btree (id) 
    "index_search_codes_on_code" UNIQUE, btree (code) 
    "index_search_codes_on_address_id" btree (address_id) 
Foreign-key constraints: 
    "fk_rails_6bd9792e3b" FOREIGN KEY (address_id) REFERENCES addresses(id) 

을 만들어 얻을 것 같지 않았다주의 사항?

답변

1

ReferenceDefinitionon_delete 옵션을 허용하지 않습니다. add_foreign_key으로 삭제시 지정할 수 있습니다.

class CreateSearchCodeTable < ActiveRecord::Migration[5.0] 
    def change 
    create_table :search_codes do |t| 
     t.string :code 
     t.references :address, type: :string, index: true 
     t.index ["code"], name: "index_search_codes_on_code", unique: true, using: :btree 
    end 

    add_foreign_key :search_codes, :addresses, on_delete: :cascade 
    end 
end 
+0

차가워서 지정할 수 있습니다. 나는 일해야 할 일 (예 : "on_delete")을 지정하지 않는 것이 싫다. – Dave

관련 문제