質問: "ALTER TABLE dashboards CONVERT TO CHARACTER SET utf8mb4" ActiveRecord::Base.connection.execute(sql) end def down end end ``` というテーブルの文字コードを変更するマイグレーションをかいたのですが 上長から完全にもとに戻せる down もかいてほしいといわれました ただ staging と production でもとのテーブルの文字コードが違っていて 固定で埋め込むことができないのですが Rails.env で分岐してうめこむことでこの2つだけなら対応できますが 開発者個々人の develop まで網羅することができないので 「完全に」戻すにはもとの文字コードを記憶しておいて down で戻すような migration が必要なのですが かく方法はあるのでしょうか
回答: > > 上長から完全にもとに戻せる down もかいてほしいといわれました > > > この場合、もとのエンコード次第では**不可能**です。新しいテーブルに`utf8mb4`にはあるけど、もとのエンコードでは使えない文字が入ってしまった場合、どうあがいてもエンコードを戻すことはできません。 このような場合、`down`の側に`raise ActiveRecord::IrreversibleMigration`と書いて、「戻せない」ことをはっきりしておきましょう。