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を使用してユーザーテーブルを再度削除するにはどうすればよいですか?
次のコマンドを実行します
rake db:migrate:down VERSION=<version>
どこ <version>
は、元に戻す移行ファイルのバージョン番号です。
例えば。ファイル名3846656238_create_users.rbで移行を元に戻したい場合
rake db:migrate:down VERSION = 3846656238
次のコマンドを実行するだけです:
rake db:rollback
移行を元に戻すには3つのオプションがあると思います(これらも重複しています)。
最新の移行をロールダウンします:
rake db:migrate:down
#Rails 2のみ。ロールダウン(n)個の最近の移行:
rake db:rollback STEP=n
ロールダウン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)
ロールバックを実行し、ロールバックされる最後の移行の数を指定できます。
rake db:rollback STEP=3
最後の3回の移行用。
rake db:migrate:redo
最後の移行を取り消して再適用します。
新しいプログラマーとして(または他の新しいプログラマーに)
rake db:rollback
は約半分の時間で機能します。そこから始めます。
そうでない場合、rake db:migrate:down VERSION=3846656238
元に戻す移行ファイルのバージョン番号のバージョンをプラグインします。
Rails 5の場合、Rails command instead of rake
Rails db:migrate:down VERSION=<version>
例
Rails db:migrate:down VERSION = 20170330090327
ターミナルで次のコマンドを実行します。
rake db:migrate:status
または
bundle exec rake db:migrate:status
以前に実行したすべての移行のステータス、移行ID、移行名が表示されます。移行ID(つまり、バージョン番号)を選択し、そのIDを次のコマンドのversion = ,の後に入力して、Enterキーを押します
bundle exec rake db:migrate:down VERSION=