Après avoir installé le modèle d’utilisateur de modèle, j’ai eu ceci.
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
# t.encryptable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
# add_index :users, :authentication_token, :unique => true
end
def self.down
drop_table :users
end
end
Maintenant, si je rake db: migrer la table des utilisateurs sera créée.
Comment puis-je annuler cette migration, c’est-à-dire comment puis-je supprimer la table des utilisateurs en utilisant à nouveau rake?
Lancer la commande suivante
rake db:migrate:down VERSION=<version>
où <version>
est le numéro de version de votre fichier de migration que vous souhaitez restaurer.
par exemple. si vous souhaitez annuler une migration avec le nom de fichier 3846656238_create_users.rb
rake db: migrate: down VERSION = 3846656238
Il suffit de lancer cette commande:
rake db:rollback
Je pense qu'il y a trois options disponibles pour annuler les migrations (elles se chevauchent également):
Déroulez la dernière migration :
rake db:migrate:down
# Rails 2 seulement.
Faites défiler un nombre (n) de migrations récentes:
rake db:rollback STEP=n
Faites défiler jusqu'à une version précédente, spécifique :
$ rake db:migrate:down VERSION=nnn
# Rails 3 (indiquez également le numéro de version).
Le numéro de version désigne le SHA (algorithme de hachage sécurisé) du commit, qui est un long nombre hexadécimal qui ressemble à 886af3194768917c78e ... Vous pouvez le voir en faisant git log
Vous pouvez voir ces commandes (et d’autres) avec leurs descriptions en utilisant rake -T db:
_ qui pour Rails 3.2 inclut:
rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status # Display status of migrations
rake db:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n)
Vous pouvez effectuer une annulation et spécifier le nombre de dernières migrations qui seront annulées, par exemple.
rake db:rollback STEP=3
pour les 3 dernières migrations.
rake db:migrate:redo
Il va annuler et réappliquer la dernière migration.
En tant que nouveau programmeur (ou à d'autres nouveaux programmeurs)
rake db:rollback
fonctionne environ la moitié du temps. Je commence par là.
Si non, rake db:migrate:down VERSION=3846656238
branchez VERSION pour le numéro de version de votre fichier de migration que vous souhaitez rétablir.
Pour Rails 5 on peut utiliser Rails command instead of rake
Rails db:migrate:down VERSION=<version>
exemple
Rails db: migrate: down VERSION = 20170330090327
Exécutez cette commande dans votre terminal:
rake db:migrate:status
ou
bundle exec rake db:migrate:status
Il indique le statut, les ID de migration et le nom de la migration pour toutes les migrations que nous avons exécutées précédemment. sélectionnez votre identifiant de migration (c'est-à-dire votre numéro de version) et insérez cet identifiant dans la commande suivante après version = , et appuyez sur Entrée.
bundle exec rake db:migrate:down VERSION=
rake db:migrate:status
rake db:migrate:down VERSION=20190802023239
....... et maintenant vous êtes aux courses!