Pregunta

¿Cómo se elimina un objeto ActiveRecord?

Registro Activo Consulta y no tiene nada en la supresión de lo que puedo ver .

  1. Delete por id,

  2. Eliminar el objeto actual como: user.remove,

  3. puede eliminar la base de una cláusula de where?

¿Fue útil?

Solución

Es destroy y destroy_all mé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 delete y delete_all que no hará cumplir :before_destroy y :after_destroy devoluciones de llamada o cualquier opción de asociación dependiente.

User.delete_all(condition: 'value') le permitirá a los registros de borrado sin una clave principal

Nota: . Del comentario de @ hammady, user.destroy no funcionará si el modelo usuario no tiene clave primaria

Nota 2 : Desde el comentario de @ Pavel-chuchuva, destroy_all con las condiciones y delete_all con las condiciones ya no se utiliza en Rails 5.1 - ver guides.rubyonrails.org/5_1_release_notes.html

Otros consejos

Hay delete, delete_all, destroy y destroy_all.

Los documentos son: docs anterior y Carriles 3.0.0 docs

delete no instanciar los objetos, mientras que destroy hace. En general, es más rápido que delete destroy.

  1. User.destroy

User.destroy(1) eliminará usuario con id == 1 y :before_destroy y devoluciones de llamada :after_destroy ocurrir. Por ejemplo, si ha asociado registros

has_many :addresses, :dependent => :destroy

Después se destruye el usuario sus direcciones será destruido también. Si utiliza la acción de borrado lugar, no se producen devoluciones de llamada.

  1. User.destroy, User.delete

  2. User.destroy_all(<conditions>) o User.delete_all(<conditions>)

Aviso : El usuario es una clase y el usuario es un objeto de instancia

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top