2017-12-04 12 views
0

私は長期間に渡って再配布する予定のRails-APIアプリケーションを持っています。アプリは非制作ですが、プロダクション版を配備する準備が整いました。私は基本的にすべての移行ファイルを削除し、最初からスキーマを使用して開始したい、このアプローチに何か問題はありますか?私がこれを行うことができると仮定すると、schema.rbを変更するために何が必要ですか?これは一般的なプラクティスですか?私には妥当だと思われる。すべての移行ファイルを削除して最初から開始できますか?

# what do I change the version param value to? 
ActiveRecord::Schema.define(version: 20171129023538) 

答えて

2

移行は、データベースの更新や以前のバージョンへのロールバックに使用されます。移行がすべての環境で実行された後は、再度参照することはありません(手動でschema_migrationsテーブルを使用していない限り)。すべての移行が実行されると、データベースの現在の状態はdb/schema.rb(またはdb/structure.sql)です。したがって、schema.rbは新しいデータベースから始めなければなりません。

私は、ちょうど混乱を減らすために、数ヶ月ごとに古い移行をクリアする傾向があります。

バージョンが表示される限り、あなたはそれを残しておくことができます。これは過去の時間を表していれば(2017-11-29 02:35:38など)、実行する必要のあるマイグレーションよりも低い(すべてを削除しているので適用されません)それが何であるかは関係ありません。

すべての移行をクリアすると、すでにschema.rbに反映されているため、本当に必要な場合はいつでもリビジョンコントロールからそれらを掘り出すことができます。

+0

と、ActiveRecord :: Schema.define(バージョン:20171129023538)の内容は一度すべて削除しますか?バージョン:0?それ以降のマイグレーションはその価値を置き換えるので、それは重要ですか? – gangelo

+0

ちょうどそれを残すだけで、2017-11-29 02:35:38は過去であり、移行は残っていないのでそのままの状態では問題ありません。 –

+0

Worked。クールな豆。 – gangelo

関連する問題