91 votes

Comment réinitialiser une seule table dans les rails ?

Je veux que les valeurs de la clé primaire recommencent à partir de 1.

187voto

Flaviu Points 3032

Beaucoup de personnes (comme moi) viennent ici pour trouver comment supprimer toutes les données de la table. Voici comment faire :

$ rails console

> ModelName.delete_all

ou

> ModelName.destroy_all

destroy_all vérifie les dépendances et les callbacks, et prend un peu plus de temps. delete_all est une simple requête SQL.

Plus d'informations ici : http://apidock.com/rails/ActiveRecord/Base/delete_all/class

51voto

Meltemi Points 11116

J'ai utilisé ce qui suit à partir de la console de Rails pour supprimer tout ce qui se trouve dans la table, puis réinitialiser le compteur d'index (Ruby 2 & Rails 4) :

> ModelName.delete_all
> ActiveRecord::Base.connection.reset_pk_sequence!('model_name')

26voto

Rick Points 166

Pour réinitialiser l'index/clé primaire dans SQLite, il suffit de taper :

$ rails console
> ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = 'yourtablename'")

18voto

vansan Points 440

Le lien de @khelll est utile. La commande que vous voulez pour tronquer une table est :

ActiveRecord::Base.connection.execute("TRUNCATE #{table_name}")

10voto

kikito Points 23229

Ajouter gem 'database_cleaner' à votre Gemfile, exécutez $ bundle install et ensuite :

> DatabaseCleaner.clean_with(:truncation, :only => ['yourtablename'])

Vous pouvez spécifier plus de tables :

> DatabaseCleaner.clean_with(:truncation, :only => ['table1', 'table2', 'table3'])

Si vous ne tenez pas compte du dernier paramètre, la base de données sera entièrement tronquée :

> DatabaseCleaner.clean_with(:truncation) # your database is truncated

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