
背景
Create tableのマイグレーションで追加したカラムが必要なくなったので、remove_columnのマイグレーションを行いました。
マイグレーションファイルはこちら
1 | class RemoveTitleFromExamples < ActiveRecord::Migration |
マイグレーションは成功してtitleというカラムはなくなりました。
ところがやっぱりtitleというカラムが必要ということで、上記で実施したマイグレーションを元に戻そうとしました。すると以下のようにエラーが発生してしまいました…
1 | $ ./bin/rails db:rollback |
エラーメッセージを見れば対応方法は分かりそうですね
対応方法
エラーメッセージにある
1 | remove_column is only reversible if given a type. |
が答えですね。型を与えてあげればrollbackが可能ということです。ですので、先ほどのマイグレーションファイルを以下のように変更します。
1 | class RemoveTitleFromExamples < ActiveRecord::Migration |
マイグレーションを実行してみましょう。
1 | $ ./bin/rails db:rollback |
無事追加されました!
ですが、元の位置には追加されておらず、最後に追加されてしまいます…
afterオプションが効くかどうか試してみます。
一旦マイグレーションします。
1 | $ ./bin/rails db:migrate |
マイグレーションファイルを書き換えます
1 | class RemoveTitleFromExamples < ActiveRecord::Migration |
rollbackします
1 | $ ./bin/rails db:rollback |
テーブルを確認すると、ちゃんと指定したカラムの後に追加されています!
最後に、カラム削除用に作成したマイグレーションのファイルを削除して完了です。