Szukam najlepszego podejścia do usuwania rekordów z tabeli. Na przykład mam użytkownika, którego identyfikator użytkownika znajduje się w wielu tabelach. Chcę usunąć tego użytkownika i każdy rekord, który ma swój identyfikator we wszystkich tabelach.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
To działa i usuwa wszystkie referencje użytkownika ze wszystkich tabel, ale słyszałem, że destroy_all
było to bardzo obciążające proces, więc spróbowałem delete_all
. Usuwa tylko użytkownika ze swojej własnej tabeli użytkowników, a id
wszystkie pozostałe tabele są zerowane, ale pozostawiają w nich nienaruszone rekordy. Czy ktoś może udostępnić prawidłowy proces wykonywania takiego zadania?
Widzę, że destroy_all
wywołuje destroy
funkcję na wszystkich powiązanych obiektach, ale chcę tylko potwierdzić prawidłowe podejście.
delete_all
, oraz 2)destroy_all
tworzy wszystkie rekordy i niszczy je pojedynczo, więc przy bardzo dużym zestawie danych może to być boleśnie powolne.