Предварительная нагрузка оставлена ​​объединенной ассоциацией с условием - PullRequest
1 голос
/ 29 марта 2020

У меня есть две модели:

Class Item < ApplicationRecord
  belongs_to :item_category
end
Class ItemCategory < ApplicationRecord
  has_many :items
end

Упрощенная схема:

items (id, name, price, item_category_id)
item_categories (id, name, depth(int))

Дайте список идентификаторов элементов, я хочу загрузить эти элементы.

Если элемент находится в категории определенной глубины (например, 2), то я хочу дополнительно предварительно загрузить эту категорию, а также все элементы в этой категории, даже если они не находятся в начальном списке идентификаторов элементов.

Самое близкое, что я получил, - это предварительная загрузка всех категорий, а не тех, которые имеют определенную глубину:

Item.where(id: IDS).includes(item_category: :items)

1 Ответ

0 голосов
/ 29 марта 2020

ActiveRecord Query:

Item.where(id: IDS).joins(:item_category).where(depth: 2).includes(item_category: :items)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...