Je recherche la meilleure approche pour supprimer des enregistrements d'une table. Par exemple, j'ai un utilisateur dont l'ID utilisateur figure sur de nombreuses tables. Je veux supprimer cet utilisateur et chaque enregistrement qui a son ID dans toutes les tables.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Cela fonctionne et supprime toutes les références de l'utilisateur de toutes les tables, mais j'ai entendu dire que le destroy_allprocessus était très lourd, alors j'ai essayé delete_all. Il supprime uniquement l'utilisateur de sa propre table utilisateur et le idde toutes les autres tables est rendu nul, mais laisse les enregistrements intacts. Quelqu'un peut-il partager le processus correct pour effectuer une tâche comme celle-ci?
Je vois que cela destroy_allappelle la destroyfonction sur tous les objets associés mais je veux juste confirmer la bonne approche.
delete_all, et 2)destroy_allinstancie tous les enregistrements et les détruit un à la fois, donc avec un très grand ensemble de données, cela pourrait être très lent.