Nehmen sie diesen Fall als Beispiel:Wie kaskadiere ich polymorphe Assoziationen im aktiven Datensatz?
class Child < ActiveRecord::Base
belongs_to :fruitful, polymorphic: true
end
class Parent < ActiveRecord::Base
has_many :children, as: :fruitful, dependent: :destroy
end
# Once I create the parent and children
p = Parent.create
p.children << Child.new
p.children << Child.new
p.save
# But deleting parent does not delete children:
p.destroy # why not?
Die Frage wird, ist „abhängig: zerstören“ nicht mit aktivem Rekord polymorpher Vereinigung unterstützt und muß ich before_destroy Rückruf implementieren, um verwaisten Datensätze zu verhindern?
Erstens, danke für die Beantwortung. Zweitens war dies ein vereinfachtes Beispiel, bei dem mein tatsächlicher Fall ein tatsächliches Modell ist, das mit "Kindern" gefüllt wurde, die eine polymorphe Assoziation verwenden, und die destroy-Methode wurde innerhalb einer "Zerstörungs" -Aktion des Controllers aufgerufen. Ich finde, dass alle NICHT-POLYMORFISCHEN Beziehungen aus der DB gelöscht werden, während polymorphe Beziehungen beibehalten werden. Ich habe bemerkt, dass die Rails-Dokumentation die Option "dependent:: destroy" NICHT enthält. – Vlad
Hah! Erscheint habe ich vergessen, tatsächlich hinzufügen:: zerstören in meinem Code! – Vlad