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.
fuente
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.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_all
crea 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_all
equivalente aUsageIntex.delete_all
?UsageIndex.destroy_all
ya 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