2011-06-26 13 views
5

¿Por qué este trabajo:Rieles, destruir frente a eliminar?

@poll_votes = PollVote.where(:user_id => self.user_id, :poll_id => self.poll_id).all 

@poll_votes.each do |p| 
    p.destroy 
end 

Pero esto no es así?

@poll_votes = PollVote.where(:user_id => self.user_id, :poll_id => self.poll_id).destroy 

Respuesta

10

Esto debería funcionar: PollVote.destroy_all (: user_id => self.user_id,: poll_id => self.poll_id)

1

'where' es un ámbito con nombre. Está llamando a un método de destrucción en una colección de ámbito con nombre. Pruebe destroy_all

15

El método where devuelve una colección enumerable de objetos activerecord que cumplen los criterios de selección. Llamar al método destroy en esa colección es diferente a invocar el método destroy en un único objeto activerecord.

+0

gracias, pero no menciona la solución? – AnApprentice

+4

@AnApprentice, no pidió una solución, preguntó por qué algo no funciona, y Fred le dio una buena explicación, por lo que su respuesta podría ser aceptada. –

Cuestiones relacionadas