:desc)のように、子のモデルにクエリを付け足してしまうとキャッシュが効かず、N+1問題が発生してしまう。'Book'のように、has_manyにスコープを渡してやり、それをincludesの引数に渡すと、キャッシュが効いてくれる。name.とあるので、Category.includes(:books).merge(Book.published).references(:books)としてもよい。どちらの場合においても、Bookのスコープの条件が、親のモデル(Category)になるため、上の例ではpublishedなbookが一つもないcategoryはクエリの結果として出てこないので注意。upLoginユーザーは見つかりませんでした。