rename_column とreset_column_informationがうまく協調してない

ActiveRecordはテーブルの情報(カラムなど)をキャッシュして使うので、マイグレーションによってスキーマが変更された直後にはそれが反映されていない場合がある。

それをとりあえずその場で解決するためにreset_column_informationというメソッドがあるのだが、思うに、理想的にはすべてのマイグレーションメソッドが終わった時に即座に反映されるべきなんじゃないかと思っている。

自分の場合、問題が生じたのはrake db:migrate:reset に連続してdb:seedやサンプルデータ生成のスクリプトを流すdb:setup_all的なコマンドを実行する時に、rename_columnが含まれているとカラムの情報が古くてエラーになってしまった。

ここのテーブルでreset_column_informationを叩けば解決はするのだが、そんくらい反映してくれよって思った。

ここみたいだ。

https://github.com/rails/rails/blob/4d7e96910f7704e08eb193ddf47323cc71a8ab11/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L498

add_columnとかでは問題にならないのはなぜなんだろう。

https://github.com/rails/rails/blob/4d7e96910f7704e08eb193ddf47323cc71a8ab11/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L445

https://github.com/rails/rails/blob/41d432dd7af44c7d1fc5070abddf470dd06035a9/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb#L530

データベースとも関係があるのかもしれない。