156 votes

Supprimer tous les enregistrements d'une base de données

Comment supprimer tous les enregistrements de l'une de mes tables de base de données dans une application Ruby on Rails?

296voto

HakonB Points 3506

Si vous cherchez une solution sans SQL, vous devriez pouvoir utiliser delete_all.

 Post.delete_all
 

ou avec un critère

 Post.delete_all "person_id = 5 AND (category = 'Something' OR category = 'Else')"
 

Voir ici pour plus d'informations.

Les enregistrements sont supprimés sans les charger au préalable, ce qui le rend très rapide, mais va casser des fonctionnalités telles que le cache de compteur qui dépend du code de rails à exécuter lors de la suppression.

34voto

lebreeze Points 3575

Supprimer via SQL

Item.delete_all # accepts optional conditions

Pour supprimer en appelant la méthode destroy de chaque modèle (coûteux, mais garantit que les rappels sont appelés)

Item.destroy_all # accepts optional conditions

Tous ici

26voto

KensoDev Points 2156

Si vous voulez vider complètement la base de données et ne pas simplement supprimer un modèle ou des modèles qui y sont attachés, vous pouvez faire:

 rake db:purge
 

vous pouvez également le faire sur la base de données de test

 rake db:test:purge
 

4voto

Philip Points 1119
BlogPost.find_each(&:destroy)

2voto

stef Points 6478

Si votre modèle s'appelle BlogPost, ce serait:

 BlogPost.all.map(&:destroy)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X