Estoy buscando el mejor enfoque para eliminar registros de una tabla. Por ejemplo, tengo un usuario cuyo ID de usuario se encuentra en muchas tablas. Quiero eliminar este usuario y cada registro que tenga su ID en todas las tablas.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Esto funciona y elimina todas las referencias del usuario de todas las tablas, pero escuché que el destroy_all
proceso era muy pesado, así que lo intenté delete_all
. Solo elimina al usuario de su propia tabla de usuario y el id
de todas las otras tablas se anula, pero deja los registros intactos en ellas. ¿Alguien puede compartir cuál es el proceso correcto para realizar una tarea como esta?
Veo que destroy_all
llama a la destroy
función en todos los objetos asociados, pero solo quiero confirmar el enfoque correcto.
delete_all
, y 2)destroy_all
crea instancias de todos los registros y los destruye uno a la vez, por lo que con un conjunto de datos muy grande, esto podría ser dolorosamente lento.