2010-02-04 11 views
14

Modelo A:¿Cómo puedo eliminar objetos secundarios cuando el padre se elimina en los rieles?

has_many :b, :dependent => :delete_all 

Modelo B:

belongs_to :a 
belongs_to :c 

Modelo C:

has_many :b 

Cuando se elimina un a, también me gustaría tener hijos b's eliminados para que ser eliminado de cualquier c's que pueda hacer referencia a ellos. Sin embargo, lo anterior no está funcionando. Agradecería cualquier ayuda.

+1

Duplicado: http://stackoverflow.com/questions/331394/can-i-set-up-cascade-deleting-in-rails – hobodave

Respuesta

32

así:

class Widgets < ActiveRecord::Base 
    has_many :whatevers, :dependent => :destroy 
end 

actualización

Su comentario reciente indica que está utilizando el método delete() para eliminar los objetos. Esto no usará las devoluciones de llamada. Por favor, lea the manual para más detalles.

+0

No puedo entender por qué esto no funciona. Cuando elimino una 'a' que hace referencia a 'b', y esa 'b' también se referencia en una 'c', la 'b' sigue siendo un elemento secundario de la 'c' después de la eliminación de 'a', usando la encima. – James

+0

James, tendrías que tener: dependent =>: destroy para todos los objetos de la cadena. –

+0

hmmm ... funciona cuando invoco destruir en el elemento principal, pero no funciona cuando llamo a eliminar. Es esto esperado? – James

Cuestiones relacionadas