web-dev-qa-db-ja.com

rake db:migrateを使用して1ステップだけロールバックする方法

db/migrateフォルダーに移行ファイルを追加してrake db:migrateを実行した後、前のステップに戻りたいのですが、VERSION=nを使用するのが正しい方法だと思いますが、使用するnの正しい値を知っている。現在のn値を確認​​するコマンドはありますか?

rake db:migrateの使用方法に関する完全な指示を誰かが提供できれば素晴らしいと思います。

180
mko

手始めに

rake db:rollbackは1ステップ戻ります

それから

rake db:rollback STEP=n

nマイグレーションをロールバックします。nは、ロールバックする最近のマイグレーションの数です。

その他の参照 こちら

329
rwilliams

最新の移行をロールバックします。

rake db:rollback

n最新の移行をロールバックします。

rake db:rollback STEP=n

Rails移行タスクの使用に関する完全な説明は、移行を実行するための Railsガイド にあります。


ここにいくつかあります:

  • rake db:migrate-まだ実行されていないすべての移行を実行します
  • rake db:migrate VERSION=20080906120000-必要なすべての移行(アップまたはダウン)を実行して、指定されたバージョンを取得します
  • rake db:migrate Rails_ENV=test-指定された環境で移行を実行する
  • rake db:migrate:redo-1つの移行をロールバックして、再度実行します
  • rake db:migrate:redo STEP=n-最後のn移行をロールバックして、再度実行します
  • rake db:migrate:up VERSION=20080906120000-指定された移行に対してupメソッドを実行します
  • rake db:migrate:down VERSION=20080906120000-指定された移行に対してdownメソッドを実行します

そして、移行のバージョン番号をどこから取得するかについての質問に答えるために:

バージョンは、移行のファイル名の数字のプレフィックスです。たとえば、バージョン20080906120000に移行するには、次を実行します。

$ rake db:migrate VERSION=20080906120000

(Railsガイドの Running Migrations から)

88
Ajedi32

最善の方法は、downまたはupを使用して特定の移行を再度実行することです(Rails 4.で変更されます)

Rails db:migrate:up VERSION = timestamp

タイムスタンプを取得する方法。このパスに移動します

/ db/migrate

復帰する移行ファイルを特定します。そのファイル名からタイムスタンプを選択します。

7
Hemali

バージョンが20150616132425の場合、次を使用します。

Rails db:migrate:down VERSION=20150616132425
1
Đoàn Nghĩa

他の人はすでにロールバックの方法を答えていますが、移行のバージョン番号を特定する方法も尋ねました。

  • rake db:migrate:statusは、移行バージョン、名前、およびステータス(アップまたはダウン)のリストを提供します
  • また、ファイル名にタイムスタンプ、つまりバージョン番号が含まれる移行ファイルを見つけることもできます。移行は次のフォルダにあります:/db/migrate
1