2

私が走ったとき、私bundle exec rake db:test:prepareは以下を得ました:

rake aborted!
Multiple migrations have the name CreateMicroposts

移行ファイルのステータスを確認するために、実行しました

rake db:migrate:status

そして得た:

ステータス 移行 ID 移行名 ------- --------------- -----------------

up 20120616205407 ユーザーの作成

up 20120622103932 ユーザーのメールにインデックスを追加

up 20120622114559 パスワード ダイジェストをユーザーに追加する

up 20120628095820 ユーザーに記憶トークンを追加

up 20120704123654 管理者をユーザーに追加

down 20120706103254 マイクロポストを作成する

up 20120707073410 マイクロポストを作成する

ご覧のとおり、まったく同じ名前とまったく同じコードを持つ 2 つの移行ファイルがあります。ステータスが異なるだけです。つまり、Up と Down です。

アップとダウンは何を意味しますか?

必要に応じて、どれを削除できますか?

4

2 に答える 2

0

問題は、ヘッダーを含む 2 つの異なる移行ファイルがあることです。

class CreateMicroposts< ActiveRecord::Migration

rake db:migrate:status は移行ファイルのステータスをチェックしません。rake db:migrate を実行すると適用されるマイグレーションが表示されます。アップ/ダウン ラベルはほとんど一目瞭然です。移行がアップ メソッドまたはダウン メソッドのどちらで適用されるかがわかります。up メソッドは移行時に実行され、down メソッドは移行のロールバック時に実行されます。Rails の移行については、こちらでさらに読むことができます。

于 2012-07-13T07:04:39.117 に答える
0

upは「進化」(新しいスキーマへの移行)down時に呼び出されるメソッドであり、 は「後退」(つまり、変更の 1 つが適切ではないため、古いスキーマ バージョンへの移行) 時に呼び出されるメソッドです。db:migrateコールupdb:rollbackコールdown。レールの最近のバージョンでは、change両方を同時に処理する があります。

削除に関しては... 私は最近はあまりアクティブレコードを実行していませんが、ファイルに対しては自由に何をしてもいいと思います。重複ファイルを削除しても害はないと思います。:)

于 2012-07-13T07:06:16.813 に答える