2010-02-04 4 views
14

Modell ein:Wie kann ich untergeordnete Objekte löschen, wenn das übergeordnete Element in Schienen gelöscht wird?

has_many :b, :dependent => :delete_all 

Modell b:

belongs_to :a 
belongs_to :c 

Modell c:

has_many :b 

Wenn ich löschen ein a, würde Ich mag auch b's so gelöscht Kinder haben, dass sie von allen c's entfernt werden, die auf sie verweisen können. Das obige funktioniert jedoch nicht. Ich würde mich über jede Hilfe freuen.

+1

Duplizieren: http://stackoverflow.com/questions/331394/can-i-set-up-cascade-deleting-in-rails – hobodave

Antwort

32

Wie so:

class Widgets < ActiveRecord::Base 
    has_many :whatevers, :dependent => :destroy 
end 

aktualisieren

Ihre aktuellen Kommentar zeigt Ihnen die delete() Methode verwenden, um Ihre Objekte zu löschen. Dies wird die Rückrufe nicht verwenden. Bitte lesen Sie the manual für Details.

+0

Ich kann nicht herausfinden, warum das nicht funktioniert. Wenn ich ein "a" lösche, das auf ein "b" verweist, und dass "b" auch in einem "c" referenziert wird, ist das "b" immer noch ein Kind des "c" nach der Löschung von "a" über. – James

+0

James, du müsstest haben: dependent =>: zerstöre alle Objekte in der Kette. –

+0

hmmm ... funktioniert, wenn ich den Elternteil anrufe, aber nicht funktioniert, wenn ich delete anrufe. Wird das erwartet? – James

Verwandte Themen