¿Cómo se elimina un objeto ActiveRecord?
-
09-10-2019 - |
Pregunta
¿Cómo se elimina un objeto ActiveRecord?
Registro Activo Consulta y no tiene nada en la supresión de lo que puedo ver .
-
Delete por
id
, -
Eliminar el objeto actual como:
user.remove
, -
puede eliminar la base de una cláusula de
where
?
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
.
-
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.
-
User.destroy
,User.delete
-
User.destroy_all(<conditions>)
oUser.delete_all(<conditions>)
Aviso : El usuario es una clase y el usuario es un objeto de instancia