- ejecuta las devoluciones de llamada del modelo y luego realiza una consulta REMOVE a la base de datos.
delete
solo hace una consulta REMOVE a la base de datos.
Los nombres están tomados de ActiveRecord
, es por eso que no coinciden muy bien con mongo.
Puede ver delete
como una optimización sobre destroy
. Cuando utiliza destroy
, se asegura de que se ejecuten callbacks before_destroy
, por lo que se realiza una limpieza adecuada. Por otro lado, si hace algo como Model.destroy_all
, tiene que cargar TODOS los elementos, y luego hacer una consulta REMOVE para cada uno de ellos, ya sea que Model.delete_all
haga solo una consulta.
así que si no tengo ninguna devolución de llamada, ¿son lo mismo? –
Sí, probablemente consideraría usar 'destroy'. Si alguna vez agregas una devolución de llamada, deberás recordar cambiarla de 'borrar' a' destruir' a menos que no quieras que se ejecute realmente la devolución de llamada. –
No, no son lo mismo, incluso si no tiene devoluciones de llamada. Como 'destroy' depende de las devoluciones de llamada, tiene que cargar el documento relacionado para ejecutar las devoluciones de llamada, y hacer la consulta DELETE. 'delete' solo hace una consulta DELETE. Entonces, destruir es "más seguro", pero eliminar es "más rápido" – tothemario