98 votes

Ruby on Rails: Comment puis-je annuler une migration avec rake db: migrate?

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.-à-d. Comment puis-je supprimer la table des utilisateurs en utilisant à nouveau rake?

151voto

Mahesh Points 1642

courir

 rake db:migrate:down VERSION=3846656238
 

où VERSION est le numéro de version de votre fichier de migration que vous souhaitez restaurer.

116voto

damienbrz Points 1001

Il suffit de lancer cette commande:

 rake db:rollback
 

67voto

Michael Durrant Points 30342

Je crois qu'il y a trois options disponibles pour les migrations de retour (elles se chevauchent aussi):

  1. Rouler le plus récent de la migration:

    rake db:migrate:down # Rails 2 seulement.

  2. Rouler en bas d'un certain nombre(n) de récentes des migrations:

    rake db:rollback STEP=n

  3. Rouler à une précédente, spécifique à la version:

    $ rake db:migrate:down VERSION=nnn # Rails 3 (fournir le numéro de version aussi).

Numéro de Version signifie que le SHA(Secure Hash Algorithm) pour la livraison qui est un long nombre hexadécimal qui ressemble à quelque chose comme 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 les rails 3.2 comprend:

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)

16voto

bender Points 952

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.

10voto

keneth Points 49
 rake db:migrate:redo
 

Il va annuler et réappliquer la dernière migration.

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