Я делаю заявку на использование материала. Продукт может быть частью многих сборок и иметь много sub_products. У меня есть следующие модели:Каков наиболее эффективный способ выбора продуктов и суб-продуктов продуктов? Self-Referential has_and_belongs_to_many Association
models/product.rb
has_many :sub_structure, primary_key: "produktnr", class_name: "Structure", foreign_key: "produktnr"
has_many :sub_products, through: :sub_structure, source: :product
has_many :structures, primary_key: "produktnr", class_name: "Structure", foreign_key: "delproduktnr"
has_many :assemblies, through: :structures, source: :assemblie
models/structre.rb
belongs_to :assemblie, primary_key: "produktnr", class_name: "Product", foreign_key: "produktnr"
belongs_to :product, primary_key: "produktnr", class_name: "Product", foreign_key: "delproduktnr"
Чтобы выбрать все субпродукты легко:
@product.sub_products
Но что является наиболее эффективным способом, чтобы выбрать субпродукты и они субпродукты?
Что-то вроде:
@product.sub_products.sub_products
Я попытался создать метод класса в Product, и он работает. Проблема в том, что этот метод запускает SQL-запрос для каждого субпродукта, что замедляет его. – erlendjohan
Можно ли сделать один запрос для выбора всего субпродукта, у которого нет субпродуктов? – erlendjohan
обновил ответ, опять же, это не очень, но это сработало для меня. – fabriciofreitag