Rails4.2.1のときにRspecを実行したら通っていたテストが、Rails4.2.3にアップデートしたら急に落ち始めました。
落ちているテストの共通点は、
『(DBの)Viewを使っている』
という点でした。
Elasticsearchにデータをインポートした際に、データが抜けていたので、as_indexed_jsonをしたタイミングでデータが抜け落ちてるのかなと思って、pryを使いながら該当メソッドをコールしたりしていたのですが、データは存在していたため、訳がわからなかったのでした。Viewは使えてるわけです。
そこでRailsの変更履歴を見ていたら、eager_loadのN+1問題の不具合を修正したよっていうやつが。
https://github.com/rails/rails/pull/18765
もしやと思って、Viewをeager_loadした後にViewにアクセスしたら、確かにnilでした。
# Viewのデータが取れるパターン foo = Foo.find(1) foo.bar_view # データある # eager_loadするとnil foo = Foo.eager_load(:bar_view).first foo.bar_view # nil
Viewを使っている場合は要注意です。