2015-05-10 4 views
14

In Rails 4.2 können Sie beim Erstellen einer Tabelle oder Hinzufügen einer Referenz über Referenzen oder add_reference angeben, dass der Fremdschlüssel beim Löschen kaskadieren soll.Option für kaskadiertes Löschen für Referenzen oder Löschen

Befehl Gerüst erzeugen:

rails g scaffold Child parent:references name:string 

resultierende Migration:

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

    t.timestamps null: false 
end 

Antwort

33

Diese

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

    t.timestamps null: false 
end 

Nach ActiveRecord::ConnectionAdapters::TableDefinition#references funktionieren sollte, wenn ein Hash auf die Option foreign_key angegeben ist, es wird direkt in dieweitergegebenMethode.

Quelle:

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