Comment supprimer tous les enregistrements de l'une de mes tables de base de données dans une application Ruby on Rails?
ruby-on-rails
ruby
database
ruby-on-rails-3
Justin Meltzer
la source
la source
ActiveRecord
modèles. La question porte sur la suppression d'un enregistrement d'une «table» et je ne fais que pointer ou l'hypothèse contenue dans la réponse.Pour supprimer via SQL
Item.delete_all # accepts optional conditions
Pour supprimer en appelant la méthode destroy de chaque modèle (coûteuse mais garantit que les rappels sont appelés)
Item.destroy_all # accepts optional conditions
Tout ici
la source
si vous souhaitez vider complètement la base de données et pas simplement supprimer un ou plusieurs modèles qui y sont attachés, vous pouvez faire:
vous pouvez également le faire sur la base de données de test
la source
Si vous voulez dire supprimer toutes les instances de tous les modèles, j'utiliserais
la source
select
chaque fois que vous avez besoin d'utiliser une expression if à l'intérieur d'un bloc, de cette façon vous évitez d'avoir à chaîner la méthode compacte pour supprimer les éléments nil.la source
Si votre modèle s'appelle BlogPost, ce serait:
la source
MOPED: 127.0.0.1:27017 QUERY database=a_database collection=nothings selector={} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.3378ms)
Réponse plus récente dans le cas où vous souhaitez supprimer toutes les entrées de toutes les tables:
Plus d'informations sur
eager_load
ici .Après l'avoir appelé, nous pouvons accéder à tous les descendants de
ActiveRecord::Base
et nous pouvons appliquer undelete_all
sur tous les modèles.Notez que nous nous assurons de ne pas effacer la table SchemaMigration.
la source