Je cherche la meilleure approche pour supprimer des enregistrements d'une table. Par exemple, j'ai un utilisateur dont l'ID se trouve dans plusieurs tables. Je veux supprimer cet utilisateur et tous les enregistrements qui ont 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 destroy_all
était très lourd en termes de processus, alors j'ai essayé delete_all
. Il ne fait que supprimer l'utilisateur de sa propre table d'utilisateurs et la id
de toutes les autres tables sont rendues nulles, mais laissent les enregistrements intacts dans celles-ci. Quelqu'un peut-il me dire quelle est la procédure à suivre pour effectuer une tâche de ce type ?
Je vois que destroy_all
appelle le destroy
sur tous les objets associés mais je veux juste confirmer l'approche correcte.