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_allproceso era muy pesado, así que lo intenté delete_all. Solo elimina al usuario de su propia tabla de usuario y el idde 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_allllama a la destroyfunción en todos los objetos asociados, pero solo quiero confirmar el enfoque correcto.
fuente

delete_all, y 2)destroy_allcrea 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.delete_all es una sola declaración DELETE de SQL y nada más. destroy_all llama a destroy () en todos los resultados coincidentes de: condiciones (si tienes una) que podrían ser al menos NUM_OF_RESULTS sentencias SQL.
Si tiene que hacer algo drástico, como destroy_all () en un conjunto de datos grande, probablemente no lo haría desde la aplicación y lo manejaría manualmente con cuidado. Si el conjunto de datos es lo suficientemente pequeño, no le dolería tanto.
fuente
Para evitar el hecho de que
destroy_allcrea una instancia de todos los registros y los destruye uno a la vez, puede usarlo directamente desde la clase de modelo.Entonces en lugar de:
Tu puedes hacer :
El resultado es una consulta para destruir todos los registros asociados.
fuente
UsageIndex.destroy_allequivalente aUsageIntex.delete_all?UsageIndex.destroy_allya no está disponible desde los rieles 3He creado una pequeña joya que puede aliviar la necesidad de eliminar manualmente los registros asociados en algunas circunstancias.
fuente