私たちのアプリにはテキストフィールド:scheduleがあります。
もともと、データを文字列として保存していました。
モデルをに変更しましたserialize :schedule, Hash
レガシーデータを修正するには、古い(文字列)データをnilに置き換えるだけです。
ただし、シリアル化を追加した後、フィールド(文字列がある場合)に何か(nilまたは置換ハッシュ)を書き込もうとすると、例外がスローされます。
ActiveRecord::SerializationTypeMismatch: schedule was supposed to be a Hash, but was a String
シリアル化例外をオーバーライドして、フィールドを強制的にnilまたは置換ハッシュにする方法はありますか?
おそらく、SQLを介してフィールドを更新することにより、シリアル化をバイパスする方法がありますか?
(移行を使用して列を削除してから再度追加できることはわかっていますが、レーキタスクでこれを行う方法を探しています。)