Sto cercando l'approccio migliore per eliminare i record da una tabella. Ad esempio, ho un utente il cui ID utente si trova su molte tabelle. Voglio eliminare questo utente e ogni record che ha il suo ID in tutte le tabelle.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Funziona e rimuove tutti i riferimenti dell'utente da tutte le tabelle, ma ho sentito che destroy_all
era molto pesante, quindi ho provato delete_all
. Rimuove l'utente dalla propria tabella utente e id
tutte le altre tabelle vengono rese nulle, ma i record rimangono intatti in esse. Qualcuno può condividere qual è il processo corretto per eseguire un'attività come questa?
Vedo che destroy_all
chiama la destroy
funzione su tutti gli oggetti associati ma voglio solo confermare l'approccio corretto.
delete_all
e 2)destroy_all
crea un'istanza di tutti i record e li distrugge uno alla volta, quindi con un set di dati molto grande, questo potrebbe essere dolorosamente lento.