Rails 5.1.6 Ruby 2.5.1
Итак, у меня есть три модели:
class Product < ApplicationRecord
has_many :order_items, :dependent => :destroy
belongs_to :product_type
end
class ProductType < ApplicationRecord
has_many :products
end
class OrderItem < ApplicationRecord
belongs_to :order
belongs_to :product
end
Мне нужна возможность сортировать все позиции заказа по типу продукта.В алфавитном порядке по названию типа продукта, который содержится только в таблице типов продуктов.Таблица productd содержит идентификатор product_type_id.Прямо сейчас я сортирую по product_type_id, но это не по алфавиту.Я пытаюсь понять, как я могу отсортировать элементы order_items по информации, содержащейся в несвязанной таблице.Возможно, это невозможно?Как я могу сделать это возможным?
scope :sort_by_product_info, -> {(
select("order_items.id, order_items.order_id, order_items.product_id,
order_items.quantity, products.id, products.name,
products.description, products.image, products.size,
products.product_type_id")
.joins(:product)
.order("products.product_type_id ASC, products.name ASC")
)}
Я думаю, что это не может быть сделано через ActiveRecord, на что я надеялся, но вместо этого я должен использовать сырой SQL здесь.
@products_w_type = <<-SQL
SELECT *
FROM order_items, products, product_types
JOIN products
ON order_items.product_id = products.id
JOIN product_types
ON products.product_type_id = product_types.id;
SQL
вышеизложенное дает мне ноль,но я впервые пытаюсь вставить SQL в рельсы.