17

Rails 3 アプリの移行をいくつか書きましたが、移行の順序を変更したいと思います。移行の順序または順序を変更するにはどうすればよいですか? タイムスタンプのように見えるもので移行ファイルの名前を変更するのと同じくらい簡単ですか?

これは奇妙な質問であることは承知していますが、基本的に、移行を台無しにして古い移行をいくつか削除したため、新しいテーブルを作成する前にテーブルを削除する必要があります。create-the-new-table 移行に drop ステートメントを含めることができることも知っていますが、移行の順序を変更する方法を知りたいです。

4

3 に答える 3

17

はい、プレフィックスの順序で実行されていない移行を実行します。Railsの以前のバージョンでは、多分2.1または2.2で、 から始まる番号が付けられて01いましたが、タイムスタンプに切り替わりました。

どの移行が実行されたかを追跡するテーブルがあります。意図は、複数の開発者が移行を追加し、後でバージョン管理でそれらをチェックすることです。そのため、実行されていない移行が存在する可能性がありますが、実行された最も高い番号の移行の前に番号が付けられています。

移行の順序を変更する場合 (私もそうです)、順序を変更するすべての移行の前に最初にバージョンを下げる方がよいでしょう。VERSIONとともにオプションを使用しますdb:migrate。維持したい (ダウンを実行しない) 最大番号の移行が である場合は20120318143249、このように呼び出します。

rake db:migrate VERSION=20120318143249

私はよく移行を実行し、満足のいく移行の詳細が得られるまで再実行します。そのうちの 1 つに取り組みたいときに、それらを再注文することがありますが、それを最後にしたいのです。

于 2012-05-04T22:31:15.083 に答える
4

はい、ファイル名のプレフィックスが実行順序を決定します。ただし、DB を消去して最初からやり直す場合にのみ、現在のシステムが変更されることに注意してください。

于 2012-05-04T22:17:44.657 に答える