2015-05-10 11 views
14

W Railsach 4.2, podczas tworzenia tabeli lub dodawania odniesienia za pomocą odnośników lub add_reference, w jaki sposób określa się, że klucz obcy powinien kaskadowo usuwać.Opcja usuwania kaskadowego dla odwołań lub usuwania

poleceń do generowania rusztowania:

rails g scaffold Child parent:references name:string 

wynikających migracji:

create_table :childs do |t| 
    t.references :parent, index: true, foreign_key: true 
    t.string :name 

    t.timestamps null: false 
end 

Odpowiedz

33

To powinno działać

create_table :childs do |t| 
    t.references :parent, index: true, foreign_key: {on_delete: :cascade} 
    t.string :name 

    t.timestamps null: false 
end 

Według ActiveRecord::ConnectionAdapters::TableDefinition#references, jeśli hash jest określona w opcji foreign_key, jest on przekazywany bezpośrednio do foreign_key metoda.

źródło:

foreign_key(col.to_s.pluralize, foreign_key_options.is_a?(Hash) ? foreign_key_options : {}) if foreign_key_options