2012-04-12 6 views
7

私はレールアプリの開始以来ずっと多くの移行を作成しました。それらのうちのいくつかは、テスト目的のための場所です。私は今、全く役に立たない多くの移行をしています(例えば、移行でテーブルを作成して次の移行で削除するなど)。レールでの過去の移動を削除する

db:migrateを実行すると、schema.rbが更新されるため、すべての移行を削除してschema.rbの実際のコンテンツから開始できますか?

+1

「rake db:schema:load」 –

+0

を使用してすべての移行ファイルを削除できますか? – Luc

答えて

8

はい、以前の移行を削除できます(おそらくそうする必要があります)。モデルコードがスキーマの新しいバージョンに依存するため、古い移行が機能しなくなる可能性があります。

だから、すべての手段によって、マイグレーションを削除(あなたは右、ソース管理下にそれらを持っている?)、そしてあなたがする必要がある場合は、新しいデータベースを初期化するために

rake db:schema:load 

を使用しています。

UPDATE:Railsのガイドになりましたこれについて言うべき類似した何かを持っている:http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

+0

'rake db:migrate'の代わりに' rake db:schema:load'を使用しますか? – methyl

+0

いいえ、 'rake db:schema:load'は現在のデータベースをダンプし、' schema.rb'から再作成します。 'rake db:migrate'は、未処理の移行を既存のデータベースに適用します。 – Thilo

+0

schema.rbの最新バージョンを使用している場合、なぜソース管理でそれらを持つことが重要ですか?それは重要な男ではありませんか? – Luc

0

これを行うには良い方法は、次の操作を実行することです...

をあなたのプロジェクトにマイルストーンに到達すると、そのバージョンのDBの下に移行したくないと確信している場合は、 多くのマイグレーションファイルを1つのマイグレーションファイルに置き換えることができます。このマイグレーションファイルをバンドルアップする新しい「初期」マイグレーションファイルとして使用できますその日までに完了したすべて。

その後:プロジェクトで引き続きマイグレーションを使用してください。

schema.rbファイルを手動で編集しないでください。災害復旧のようなものでない限り、db/schema.rbファイルをロードしないでください。

バージョンコントロールにチェックインされているファイルが最新バージョンであるか、または正しいバージョンであることを100%保証するものではありません。

上下に移行して、大量の移行を単一の移行ファイルにまとめてバンドルするほうがはるかに安全です。

schema.rbファイルを手動で読み込むと、移行が提供するセーフティネットを完全に迂回します。それは良い考えではありません。

関連する問題