delete_all vs destroy_all?

Ich bin auf der Suche nach dem besten Ansatz zum löschen von Datensätzen aus einer Tabelle. Zum Beispiel habe ich einen Benutzer, dessen Benutzer-ID ist über viele Tabellen. Ich möchte zu löschen, diese Nutzer und jeder Datensatz mit seiner ID in allen Tabellen.

u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete

Dies funktioniert, und entfernt alle Referenzen der Anwender aus allen Tabellen, aber ich habe gehört, dass destroy_all Prozess war sehr schwer, so versuchte ich delete_all. Es entfernt nur die Benutzer von seiner eigenen user-Tabelle und die id von allen anderen Tabellen sind null, aber die Blätter der Aufzeichnungen intakt. Kann jemand teilen, was der richtige Prozess ist für die Durchführung einer Aufgabe wie diese?

Sehe ich, dass destroy_all ruft die destroy Funktion auf alle zugeordneten Objekte, aber ich will einfach nur, um zu bestätigen, den richtigen Ansatz.

InformationsquelleAutor der Frage glogic | 2011-07-14

Schreibe einen Kommentar