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_allbył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 idwszystkie 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_allwywołuje destroyfunkcję na wszystkich powiązanych obiektach, ale chcę tylko potwierdzić prawidłowe podejście.
delete_all, oraz 2)destroy_alltworzy wszystkie rekordy i niszczy je pojedynczo, więc przy bardzo dużym zestawie danych może to być boleśnie powolne.