web-dev-qa-db-fra.com

Rails - Supprimer tous les enregistrements qui remplissent une condition

Comment écrivez-vous de la manière Rails? J'ai un modèle - Managers. Je veux supprimer tous les enregistrements des Managers qui remplissent la condition que manager_level est 5.

Je vous remercie.

37
Noam B.

Je pense qu'il vaut mieux utiliser détruire au lieu de supprimer

parce que destroy supprimera l'enregistrement d'objet en cours de la base de données et également son enregistrement enfant associé de la base de données ( https://stackoverflow.com/a/22757656/5452072 )

Supprimer supprimera également les rappels, mais pas détruire.

Manager.where(:manager_level => 5).destroy_all
70
MurifoX

Essaye ça:

Manager.delete_all(manager_level: 5)
33
Andrew Hare

Cela devrait fonctionner:

Manager.where(:manager_level => 5).delete_all

Remarque: cela ne supprimera pas les enregistrements dépendants.

17
iouri