Ver destruir elimina sus elementos asociados donde delete_all puede borrar múltiples datos de la tabla de auto como DELETE * FROM table where field = 'xyz'
: Opciones posibles dependientes:
controla lo que sucede a la objetos asociados cuando se destruye su dueño. Tenga en cuenta que estos se implementan como devoluciones de llamada, y Rails ejecuta devoluciones de llamada en orden. Por lo tanto, otras devoluciones de llamada similares pueden afectar el comportamiento dependiente, y el comportamiento :dependent
puede afectar otras devoluciones de llamada.
:destroy
hace que todos los objetos asociados también se destruyan.
:delete_all
hace que todos los objetos asociados se eliminen directamente de la base de datos (por lo que las devoluciones de llamada no se ejecutarán).
:nullify
hace que las claves foráneas se establezcan en NULL. Las rellamadas no se ejecutan.
:restrict_with_exception
hace que se produzca una excepción si hay registros asociados.
:restrict_with_error
provoca un error que se agrega al propietario si hay algún objeto asociado.
Si se utiliza con la opción :through
, la asociación en el modelo de unión debe ser un belongs_to, y los registros que se eliminan son los registros de combinación, en lugar de los registros asociados.
La creación de instancias y la invocación de destroy en cada uno de los objetos secundarios será lenta si tiene muchos hijos (y n^2 si tiene nietos, y así sucesivamente). delete_all es el tipo de solución "nuke it from orbit" que no te importa/no tiene ninguna devolución de llamada before/after destroy en los modelos. –
¡Vea la respuesta más nueva a continuación! – berezovskyi
"Destruirlo desde la órbita" hizo mi día – Andreas