Saltar al contenido

Diferencia entre destruir y eliminar

Solución:

Básicamente destroy ejecuta cualquier devolución de llamada en el modelo mientras delete no lo hace.

Desde la API de Rails:

  • ActiveRecord::Persistence.delete

    Elimina el registro en la base de datos y congela esta instancia para reflejar que no se deben realizar cambios (ya que no pueden persistir). Devuelve la instancia congelada.

    La fila simplemente se elimina con una declaración SQL DELETE en la clave principal del registro y no se ejecutan devoluciones de llamada.

    Para hacer cumplir las devoluciones de llamada before_destroy y after_destroy del objeto o cualquier opción de asociación dependiente, use #destroy.

  • ActiveRecord::Persistence.destroy

    Elimina el registro en la base de datos y congela esta instancia para reflejar que no se deben realizar cambios (ya que no pueden persistir).

    Hay una serie de devoluciones de llamada asociadas con destroy. Si la devolución de llamada before_destroy devuelve falso, la acción se cancela y destroy devuelve falso. Consulte ActiveRecord :: Callbacks para obtener más detalles.

delete solo eliminará el registro de objeto actual de db, pero no sus registros secundarios asociados de db.

destroy eliminará el registro de objeto actual de db y también su registro secundario asociado de db.

Su uso realmente importa:

Si sus múltiples objetos principales comparten objetos secundarios comunes, entonces llamar destroy en un objeto principal específico eliminará los objetos secundarios que se comparten entre otros padres múltiples.

Cuando invocas destroy o destroy_all en una ActiveRecord objeto, el ActiveRecord Se inicia el proceso de ‘destrucción’, analiza la clase que está eliminando, determina qué debe hacer para las dependencias, ejecuta validaciones, etc.

Cuando invocas delete o delete_all en un objeto, ActiveRecord simplemente intenta ejecutar el DELETE FROM tablename WHERE conditions consulta contra la base de datos, sin realizar ninguna otra ActiveRecord-tareas de nivel.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *