👶
Rails の ActiveRecord で 孫モデルやひ孫モデルに join や include する方法(深いネストのincludes)
関係図
AAAs
┣BBBs
┃ ┣CCCs
┃ ┃ ┗FFFs
┃ ┗DDDs
┗GGGs
やり方
AAAs.includes(:BBBs) # 子
AAAs.includes(BBBs: :CCCs) # 孫
AAAs.includes(:GGGs, BBBs: [:CCCs, :DDDs]) # 子と孫たち
AAAs.joins(BBBs: [{CCCs: :FFFs}, :DDDs]) # ひ孫もあるとこう
参考
- Ruby on Rails - 用 Include 和 Join 避免 N+1 Query | Leon's Blogging
- Rails ActiveRecord/SQL 小技集 | Qiita
- Railsで複数テーブルのjoins/includesとwhere検索 | EasyRamble
- Railsで複数テーブルに跨ってincludesする | 飲んだり寝たり
Discussion