2012-10-10 36 views

Respuesta

58

Creo que es mejor utilizar destruir en lugar de borrar:

Manager.where(:manager_level => 5).destroy_all 
+5

Definitivamente válido, pero tenga en cuenta: "Destruye las condiciones de coincidencia de registros instanciando cada registro y llamando a su método de destrucción". (http://apidock.com/rails/ActiveRecord/Relation/destroy_all) Esto podría ser muy lento para grandes conjuntos de resultados. –

+0

Sí, estaba pensando en mantener los modelos consistentes y esas cosas. – MurifoX

+4

@MurifoX - ¿Puedes explicar por qué crees que destruir es mejor que eliminar? No necesariamente en desacuerdo, pero ayudaría a que tu respuesta sea más completa. –

12

Esto debería funcionar:

Manager.where(:manager_level => 5).delete_all 

Nota: Esto no eliminará los registros dependientes.

23

Prueba esto:

Manager.delete_all(manager_level: 5) 
+0

1. Tengo que utilizar una variable para especificar lo que desea eliminar. 2. La tabla no tiene un índice, es una tabla de conector entre otras 2 tablas. –

+0

No funcionó para mí. Hubo un error debido a la integridad referencial. –

+0

esta debería ser la respuesta aceptada, ya que otras consultas intentan SELECCIONAR antes de BORRAR, lo que conduce a problemas de rendimiento en grandes conjuntos de datos. – toobulkeh

Cuestiones relacionadas