Ich suche nach dem besten Ansatz, um Datensätze aus einer Tabelle zu löschen. Zum Beispiel habe ich einen Benutzer, dessen Benutzer-ID sich über viele Tabellen erstreckt. Ich möchte diesen Benutzer und jeden Datensatz löschen, der seine ID in allen Tabellen hat.
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 des Benutzers aus allen Tabellen, aber ich habe gehört, dass dies destroy_allsehr prozesslastig war, also habe ich es versucht delete_all. Es entfernt nur den Benutzer aus seiner eigenen Benutzertabelle und die idaus allen anderen Tabellen werden auf null gesetzt, die darin enthaltenen Datensätze bleiben jedoch erhalten. Kann jemand mitteilen, was der richtige Prozess für die Ausführung einer solchen Aufgabe ist?
Ich sehe, dass destroy_alldie destroyFunktion für alle zugeordneten Objekte aufgerufen wird, aber ich möchte nur den richtigen Ansatz bestätigen.
delete_allund 2)destroy_allalle Datensätze instanziiert und einzeln zerstört werden. Bei einem sehr großen Datensatz kann dies daher schmerzhaft langsam sein.