Es destroyy destroy_allmétodos, como
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
Alternativamente, puede utilizar deletey delete_allque no va a cumplir :before_destroyy :after_destroydevoluciones de llamada o cualquier opción de asociación dependientes.
User.delete_all(condition: 'value') le permitirá eliminar registros sin una clave primaria
Nota : según el comentario de @ hammady, user.destroyno funcionará si el modelo de usuario no tiene clave principal.
Nota 2 : Del comentario de @ pavel-chuchuva, destroy_allcon condiciones y delete_allcon condiciones ha quedado en desuso en Rails 5.1 - ver guías.rubyonrails.org/5_1_release_notes.html
User.find_by(username:"bob")es bueno para identificar el registro que se va a destruir o eliminar.Hay
delete,delete_all,destroy, ydestroy_all.Los documentos son: documentos antiguos y documentos de Rails 3.0.0
deleteno instancia los objetos, mientras que lodestroyhace. En general,deletees más rápido quedestroy.fuente
deletees más rápido pero evita las devoluciones de llamada que podría haber definido en el modeloUser.destroyUser.destroy(1)eliminará usuario conid == 1y:before_destroyy:after_destroyse producen devoluciones de llamada. Por ejemplo, si tiene registros asociadosDespués de que el usuario sea destruido, sus direcciones también serán destruidas. Si utiliza la acción de eliminación en su lugar, no se realizarán devoluciones de llamada.
User.destroy,User.deleteUser.destroy_all(<conditions>)oUser.delete_all(<conditions>)Aviso : el usuario es una clase y el usuario es un objeto de instancia
fuente
User.destroy_all()ejecuta devoluciones de llamada, por lo que antes de eliminar cualquier cosa, carga registros. Son dos sentencias SQL, no una. Además de las implicaciones de rendimiento, esto también tiene implicaciones de concurrencia. La llamada más segura omite las devoluciones de llamada;User.delete_all()emitirá un soloDELETE FROM...comando.