Existe-t-il une commande rake pour effacer les données des tables de la base de données?
Comment créer un script db: seed pour pré-remplir des données dans mes tables?
J'utilise rake db:reset
qui supprime puis recrée la base de données et inclut votre fichier seeds.rb . http://guides.rubyonrails.org/migrations.html#resetting-the-database
Vous pouvez tout supprimer et recréer base de données + semences avec les deux:
rake db:reset
: charge depuis schema.rbrake db:drop db:create db:migrate db:seed
: charges issues des migrationsAssurez-vous de ne pas avoir de connexions à la base de données (serveur Rails, client SQL ..), sinon la base de données ne sera pas supprimée.
schema.rb est un instantané de l'état actuel de votre base de données généré par:
rake db:schema:dump
Si vous n'avez pas envie de laisser tomber et de recréer tout le Shebang uniquement pour recharger vos données, vous pouvez utiliser MyModel.destroy_all
(ou delete_all
) dans le fichier seed.db pour nettoyer une table avant que vos instructions MyModel.create!(...)
ne chargent les données. Ensuite, vous pouvez refaire l'opération db:seed
encore et encore. (Évidemment, cela n'affecte que les tables dans lesquelles vous avez chargé des données, pas le reste.)
Il existe un "hack sale" sur https://stackoverflow.com/a/14957893/4553442 pour ajouter une opération "de désensemencement" similaire à la migration vers le haut et le bas ...
A partir de Rails 5, l’outil rake
en ligne de commande a été aliasé avec Rails
maintenant
Rails db:reset
au lieu de rake db:reset
fonctionnera aussi bien
Vous pouvez utiliser rake db:reset
lorsque vous souhaitez supprimer la base de données locale et recommencer à zéro avec les données chargées à partir de db/seeds.rb
. Cette commande est utile lorsque vous êtes encore en train de déterminer votre schéma et que vous devez souvent ajouter des champs aux modèles existants.
Une fois que la commande de réinitialisation est utilisée, les opérations suivantes seront effectuées: Supprimez la base de données: rake db:drop
Chargez le schéma: rake db:schema:load
Générez les données: rake db:seed
Mais si vous voulez supprimer complètement votre base de données, vous pouvez utiliser rake db:drop
. La suppression de la base de données supprimera également les conflits de schéma ou les données incorrectes. Si vous souhaitez conserver vos données, assurez-vous de les sauvegarder avant d'exécuter cette commande.
Ceci est un article détaillé sur les commandes les plus importantes de rake database .