2011-05-04 20 views
7

Estoy tratando de eliminar una matriz de usuarios, pero la forma en que lo tengo es eliminar uno por uno. Hay una mejor manera de hacerlo?Rails 3 eliminar todos los elementos de una matriz

Mi código es:

@users ||= User.where("clicks_given - clicks_received < ?", -5).to_a 
@users.each do |user| 
    user.destroy 
end 

Respuesta

12

Puede utilizar los métodos incorporados de Rails. Tenga en cuenta que debe ajustar su consulta en una matriz (si está interpolando variables) al usar estos métodos.

para iterar sobre cada uno llamando destruir (que se desarrollará a las devoluciones de llamada, etc.):

User.destroy_all(["clicks_given - clicks_received < ?", -5]) 

o simplemente para eliminar estos en la base de datos en una sola consulta (sin iteración sobre cada tema), se puede hacer esto, pero ten en cuenta que no se ejecutará sus devoluciones de llamada:

User.delete_all(["clicks_given - clicks_received < ?", -5]) 
+0

@dmarkow, sólo estaba actualizando mi respuesta con destroy_all así - no tratar de copiar su respuesta. – McStretch

+0

No te preocupes, te voté :) –

+0

Y les he votado a los dos. Sin embargo, dijo que 'delete_all' y' destroy_all' no pueden tomar dos argumentos. –

Cuestiones relacionadas