Borrado en cascada


#1

Me gustaría hacer un borrado en cascada en una relación 1:N, leyendo veo
que se hace con :dependent, me podeis decir si es algo
así?class Obra < ActiveRecord::Base
has_many :foto,
:dependent=> :delete_all
end

qué diferencia hay entre :destroy y :delete_all?


#2

El Tuesday 03 April 2007 12:08:38 Miguel Angel Calleja Lázaro
escribió:> Me gustaría hacer un borrado en cascada en una relación 1:N, leyendo veo

que se hace con :dependent, me podeis decir si es algo así?
class Obra < ActiveRecord::Base
has_many :foto,

                     :dependent=> :delete_all

end

qué diferencia hay entre :destroy y :delete_all?

Está explicado en la propia
documentación:
:dependent - if set to :destroy all the associated objects are destroyed
alongside this object by calling their destroy method. If set to
:delete_all
all associated objects are deleted without calling their destroy method.

O sea, que en el caso de usar :destroy se llama al método “destroy” de los
objetos contenidos en la asociación; si se usa :delete_all, se borran
directamente de la base de datos (sin pasar por su método “destroy”).

Saludos.