Я занимаюсь разработкой приложения для электронной коммерции.У меня есть категория модели, которая разделена на категорию и подкатегорию посредством самостоятельного объединения того же класса, как указано ниже:
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 для этого типа активной загрузки с условием / областью, где ассоциации принадлежат к одному классу?