既にリリース済みのRailsアプリケーションのDBに対して、マイグレーションを行うことになりました。DBはPostgreSQLです。
既存のデータを移行しつつ、テーブルに対してカラムを追加・削除・データ変更を行う必要があるのですが、Railsの場合はどのように進めるのが良いのでしょうか。
例えば次の様な場合に、どうすれば良いのかを教えてください。
AテーブルのXXカラムの内容を、Bテーブルへ同名カラムを追加して移動する。移動後はAテーブルのXXカラムを削除する。
XXカラムはNullを許可しない。
AテーブルにもBテーブルにも、既にデータは存在しており、これを削除しないこと。
最初はrailsのマイグレーション機能を利用して、migrationファイル内でカラム追加とデータ移行を実施しようと思いました。
しかしBテーブルへXXカラムを追加した時点でNull制約に引っかかり、かといってbbカラムの追加を行った後でないと、XXカラムへのデータ更新ができません。migrationファイルのadd_columnに続けて書くと、XXカラムは存在しないと怒られました。(rake db:migrate後にcommitされる様なので、当たり前でした)
もちろんPostgreSQLの機能を使って、いったんCSVなどにバックアップしてから変換し、再度登録すればできるのは分かりますが、Railsアプリケーションの場合、このようなやり方を取って良いのか不安です。
このような場合、Railsアプリケーションでは、どのように進めるのが良いのか教えてください。
あなたの回答
tips
プレビュー