Wie kann ich eine Kaskade Deletion in einer ONE_TO_MANY Beziehung in Rails Active machen?
-
05-07-2019 - |
Frage
Ich habe ein Modell in Schienen mit ONE_TO_MANY Beziehung. Wenn ich den Vater löschen, würde Ich mag alle Kinder löschen. Wie soll ich es tun? Ich möchte alle Aufträge und ihre Elemente löschen, wenn ich einen Benutzer löschen
Meine Modelle sind:
class User < ActiveRecord::Base
has_many :orders, :foreign_key => "id_user"
end
class Order < ActiveRecord::Base
has_many :order_items, :foreign_key => "id_pedido"
belongs_to :user, :foreign_key => "id_usuer"
end
class OrderItem < ActiveRecord::Base
belongs_to :order, :foreign_key => "id_pedido"
end
Lösung
jdl Antwort ist richtig - müssen Sie :dependent => :destroy
beiden Beziehungen addieren - d. H in Ihrer User
Klasse, fügen Sie es has_many :orders
und in Ihrer Order
Klasse, fügen Sie es has_many :order_items
Sie können auch die MySQL-Verhalten WRT Fremdschlüssel ändern möchten, vielleicht Einstellung sie ON DELETE CASCADE
.
Andere Tipps
Was Sie suchen ist die :dependent => :destroy
Option auf has_many
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow