0

現在、データベース内のテーブルごとに、いくつかの手順で列を追加しています(つまり、新しいファイルを複数回移行して列を追加します)。これにより、多数の移行ファイル(〜50程度?)が発生します。これは非常に乾燥していないようです。

大きな「add-details_to」ファイルが単一のエントリ「add_(column_name)_to」ファイルと混ざり合ってしまい、どのファイルがどの列の移行に使用されたかを判断するのが難しくなります。

移行ファイルを乾燥させて、テーブルごとに1つの移行ファイルを作成する方法はありますか?

たとえば、1回の移行で複数の列を追加し、それらの列の1つを削除することにした場合、ベストプラクティスは何ですか?

1)削除したい1つの列のダウンマイグレーションを作成します

2)複数列の移行全体をロールバックしてから、必要な列のみを使用して新しいアップ移行を作成します。

私は現在1をフォローしていますが、2を使用すると、最初の誤った移行ファイルを取り除くことができ、それによってテーブルごとの移行ファイルがたくさんあるという問題を回避できるようです。

どんな考えでもいただければ幸いです!

4

1 に答える 1

1

一般に、移行ファイルを拡張し、テストを通じて増大する要件を管理するのは良いオプションだと思います。shoulda-matchersこのための素晴らしいツールです。

down特にサーバー上で実行された後の移行のアイデアは絶対に好きではありません(即時移行に反対するup場合はいくつかの例外があります)。downで行われたであろうことを行うために、別の移行を作成したいと思いますdowndownとはいえ、行く道があることは認めます。

しかし、最終的には、これはすべてアプリのどこにいるかによって異なります。ローカルで機能に取り組んでいて、統合したい場合はdb:migrate:redo、現在の移行で必要なものが得られるまで、それを実行しているのを見ることができます。ただし、(特に本番環境に)何かをプッシュしたら、別の移行を追加します。

于 2012-08-24T22:02:02.840 に答える