web-dev-qa-db-ja.com

Ruby on Rails:rake db:migrateで移行を元に戻すにはどうすればよいですか?

Devise MODEL Userをインストールした後、これを入手しました。

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

ここで、rake db:migrateを実行すると、usersテーブルが作成されます。

この移行を元に戻すには、つまり、rakeを使用してユーザーテーブルを再度削除するにはどうすればよいですか?

87
shibly

次のコマンドを実行します

rake db:migrate:down VERSION=<version>

どこ <version>は、元に戻す移行ファイルのバージョン番号です。

例えば。ファイル名3846656238_create_users.rbで移行を元に戻したい場合

rake db:migrate:down VERSION = 3846656238

140
Mahesh

次のコマンドを実行するだけです:

rake db:rollback
110
damienbrz

移行を元に戻すには3つのオプションがあると思います(これらも重複しています)。

  1. 最新の移行をロールダウンします:

    rake db:migrate:down#Rails 2のみ。

  2. ロールダウン(n)個の最近の移行:

    rake db:rollback STEP=n

  3. ロールダウンto前のspecificバージョン:

    $ rake db:migrate:down VERSION=nnn#Rails 3(バージョン番号も提供))。

バージョン番号とは、886af3194768917c78eのような長い16進数であるコミットのSHA(Secure Hash Algorithm)を意味します... git logを実行することで確認できます

rake -T db:を使用すると、これらのコマンド(および他のコマンド)とその説明を表示できます。Rails 3.2には以下が含まれます。

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)
62
Michael Durrant

ロールバックを実行し、ロールバックされる最後の移行の数を指定できます。

rake db:rollback STEP=3

最後の3回の移行用。

13
bender
rake db:migrate:redo

最後の移行を取り消して再適用します。

9
keneth

新しいプログラマーとして(または他の新しいプログラマーに)

rake db:rollbackは約半分の時間で機能します。そこから始めます。

そうでない場合、rake db:migrate:down VERSION=3846656238

元に戻す移行ファイルのバージョン番号のバージョンをプラグインします。

9
LukeBickleTWA

Rails 5の場合、Rails command instead of rake

Rails db:migrate:down VERSION=<version>

Rails db:migrate:down VERSION = 20170330090327

4

ターミナルで次のコマンドを実行します。

rake db:migrate:status

または

bundle exec rake db:migrate:status

以前に実行したすべての移行のステータス、移行ID、移行名が表示されます。移行ID(つまり、バージョン番号)を選択し、そのIDを次のコマンドのversion = ,の後に入力して、Enterキーを押します

bundle exec rake db:migrate:down VERSION=
2
Arun JP

移行をロールバックする方法

(1)最初に移行IDを特定する

rake db:migrate:status

  • ID番号をコピーします。

Identify the migration to roll back.

(2)その後、移行をロールバックします

rake db:migrate:down VERSION=20190802023239

  • 上記の関連ID番号を貼り付けます。もちろん、あなたの場合、移行IDは異なります!正しい移行IDを使用してください。

.......そして今、あなたはレースに出かけています!

0
BKSpurgeon