Comment supprimez-vous un objet ActiveRecord?
J'ai regardé Active Record Querying et il n'y a rien sur la suppression que je puisse voir.
Supprimer par id
,
Supprimez l'objet actuel comme: user.remove
,
Pouvez-vous supprimer sur la base d'une clause where
?
Ce sont destroy
et destroy_all
méthodes, comme
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
Vous pouvez également utiliser delete
et delete_all
qui n'imposera pas les rappels :before_destroy
et :after_destroy
ou toute option d'association dépendante.
User.delete_all(condition: 'value')
vous permettra de supprimer des enregistrements sans clé primaire
Note: du commentaire de @ hammady, user.destroy
ne fonctionnera pas si le modèle utilisateur n'a pas de clé primaire.
Note 2: D'après le commentaire de @ pavel-chuchuva, destroy_all
avec conditions et delete_all
avec conditions est déconseillé dans Rails 5.1 - voir guides.rubyonrails. org/5_1_release_notes.html
Il existe delete
, delete_all
, destroy
et destroy_all
.
Les documents sont les suivants: documents plus anciens et documents Rails 3.0.
delete
n'instancie pas les objets, alors que destroy
le fait. En général, delete
est plus rapide que destroy
.
User.destroy
User.destroy(1)
supprimera l'utilisateur avec id == 1
et :before_destroy
et :after_destroy
rappels se produisent. Par exemple, si vous avez des enregistrements associés
has_many :addresses, :dependent => :destroy
Après la destruction de l'utilisateur, ses adresses seront également détruites. Si vous utilisez plutôt l'action delete, les rappels ne se produiront pas.
User.destroy
, User.delete
User.destroy_all(<conditions>)
ou User.delete_all(<conditions>)
Notice: l'utilisateur est une classe et l'utilisateur est un objet d'instance