Rails - Eager Загрузка ассоциации одного класса с областью действия - PullRequest
0 голосов
/ 25 января 2019

Я занимаюсь разработкой приложения для электронной коммерции.У меня есть категория модели, которая разделена на категорию и подкатегорию посредством самостоятельного объединения того же класса, как указано ниже:

class Category < ApplicationRecord

  enum kind: %i[category sub_category]

  has_and_belongs_to_many :products

  has_many :sub_categories, -> { where kind: 'sub_category' }, :class_name => "Category", :dependent => :destroy, :foreign_key => "parent_id"
  belongs_to :parent_category, -> { where kind: 'category' }, :class_name => "Category", optional: true, :foreign_key => "parent_id"

  scope :with_products, -> { joins(:products).distinct }

end

Моя модель продукта выглядит следующим образом:

class Product < ApplicationRecord
  has_and_belongs_to_many :categories, -> { where(kind: :category) },:class_name => "Category", source: :categories
  has_and_belongs_to_many :sub_categories, -> { where(kind: :sub_category) },:class_name => "Category", source: :categories
end

Я хочу загрузить категории (типа категории) с областью with_products и хочу загрузить категорию sub_categories (типа sub_category) также с областью действия with_products

Я пробовал оба следующих подхода, но всегда получаю ошибку

Category.category.with_products.includes (: sub_categories) .where (sub_categories: {id: Category.sub_category.with_products.ids})

и

Category.category.with_products.includes (: sub_categories) .where (sub_categories: {id: Category.sub_category.with_products.ids}). Ссылки (: sub_categories)

Есть лиРешение или способ Rails для этого типа активной загрузки с условием / областью, где ассоциации принадлежат к одному классу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...