2009-08-14 13 views
0
automatisierte

Im Moment habe ich diese Art von Setup:Rails: Wie viel ist Modell Zerstörung

:procedures, has_many => :steps 

Schritte sind mit den Verfahren gebunden, die sie unter erstellt wurden. Derzeit ist mein Verfahren für Verfahren zerstören, ist nur dies:

def destroy 
    @procedure.destroy 
end 

Ist es notwendig, alle Schritte mit diesem Verfahren verbunden zu gehen, zu finden und rufen ihre Methoden zu zerstören, oder wird Rails diese automatisch für mich behandeln?

Antwort

3

Mit der Option ': dependent =>: destroy' können Sie die abhängigen Unterobjekte, die in der destroy enthalten sind, abrufen.

in Ihrem Fall also würde es sein:

has_many => :steps, :dependent => :destroy 

Welche Schritte zerstören wird, wenn die Prozedur zerstört wird.

Sie könnten auch verwenden:

has_many => :steps, :dependent => :delete_all 

, die von der Website Schienen

The: destroy und: DELETE_ALL Option Symbole werden so genannt, weil sie mit dem Verhalten erreicht durch den Aufruf entspricht Zerstöre gegen Löschen auf einem Modellobjekt. Man löst Rückrufe, die andere erzeugt nur die Lösch SQL-Anweisung

So ist die DELETE_ALL löst nicht Rückrufe zerstören und zerstören.

+0

Wie würde ich die Option: dependent hinzufügen, wenn ich die Blocknotation verwende? Ich habe mein Code-Beispiel zu der Frage hinzugefügt. – Karl

+0

Nein, das geht im Modell nicht die Route, was denke ich .. – Karl