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テーブルから私のアドレステーブルへの外部キーを作成します。制約のカスケード部分が

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) 

どのように私はRailsの5移行とPOSTGRESを使用してカスケード接続する外部キー制約での移行を作成するのですが作成されますしていないようでした注意してください?

答えて

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

関連する問題