/ /レール内のデータベース構造/データ変換 - ruby​​-on-rails、移行

Railsでのデータベース構造/データの変換 - ルビー・オン・レール、移行

これは、この質問に対する一種のフォローアップです。 Railsの移行をデータの変換に使用できますか?

私がブランチに取り組んでいるのなら、再統合して運用環境にリリースすると、データベーススキーマが大幅に変更されます。本番環境のすべてのデータを確実に新しい形式に変換するための最善の方法は何ですか?

簡単な例としては、テキストに変更してデータに変換作業を行いたい数値列があります。それから古い列を削除したいです。

移行時にデータ操作を行わずに、そのためにレーキタスクを作成することをお勧めします。レーキタスクをマイグレーションと並行して順番に実行できるようにするためのメカニズムはありますか。

今考えることができる唯一の解決策は無効な列を2番目のコレクションにドロップするすべての移行をまとめます。新しいテーブルを追加する最初の移行セットを実行します。レーキタスクを実行してから、2番目のマイグレーションセットを実行します。これは私にとって理想的な解決策ではないようで、簡単にはうまくいかない可能性があります。

回答:

回答№1は2

移行はまさにこの種のもののためのものです。 スキーマを変更するかどうかにかかわらず、データベース内のデータを新しいバージョンのアプリケーション用に変換することは、移行の必要があります。これは、新しいバージョンのアプリケーションが稼働する前に、プロダクションで新しい変更が行われることを保証するものです。

ブランチで作業するときは、これにより、新しいタイムスタンプ付きファイルが作成されます。リリースブランチにマージすると、ファイルはそのままコピーされます。タイムスタンプがあるため、マイグレーションは(おそらく)正しい順序で実行されます。

しかし、あなたがしている変換が時々実行され続けるなら、あなたはRakeタスクを使うべきです。