2015-05-10 21 views
14

In Rails 4.2, quando si crea una tabella o si aggiunge un riferimento tramite riferimenti o add_reference come si specifica che la chiave esterna debba sovrapporsi all'eliminazione.Opzione per Elimina in cascata per referenze o On Elimina

comando per generare patibolo:

rails g scaffold Child parent:references name:string 

risultante migrazione:

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

    t.timestamps null: false 
end 

risposta

33

Questo dovrebbe funzionare

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

    t.timestamps null: false 
end 

Secondo ActiveRecord::ConnectionAdapters::TableDefinition#references, se un hash è specificata l'opzione foreign_key, viene trasmesso direttamente nelloMetodo.

fonte:

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