ActiveRecordのincludesでネストされた関連をロードする方法
ActiveRecordのincludesメソッドで関連テーブル(belongs_to, has_one, has_many)をキャッシュできる。 そこからさらに、関連テーブルの関連をキャッシュする方法
環境
前提
- Bookが
author
,publisher
,categories
をもつ - Authorが
address
,affiliation
をもつ
やりたいこと
Bookの関連をキャッシュ、かつAuthorの関連もキャッシュしたい
class Book < ApplicationRecord belongs_to :author has_one :publisher has_many: categories end class Author < ApplicationRecord has_one :address has_one :affiliation end
Book.includes([{ author: [:address, :affiliation] }, :publisher, :categories]).where(id: ids)
ちなみに自分の開発のある機能で、このincludesを利用する前後でシステムのLatencyが半減した。 Railsで簡単にできるパフォーマンス改善。