ActiveRecord でアプリケーションを実行中にテーブルから列を削除すると、ActiveRecord が列名をキャッシュするため、エラーが発生します。
ActiveRecord の他のバージョンの回避策は、モデルの #columns メソッドをオーバーライドし、移行前に非推奨の列名を除外することです (基本的に、これらの列を AR から非表示にします)。これは、列名に関連するすべてのメソッドが #columns 呼び出しに基づいていたため機能しました
ActiveRecord 3.1 では、テーブル構造のキャッシングが ConnectionPool に移動され、すべての列名関連の値 (例: coluumns_hash) が個別にキャッシュされます (3.2 では ModelSchema.columns を使用して、これが再び機能するようにしました)。
ActiveRecord 3.1 で安全な列ドロップを実現する方法はありますか?