Сложный SQL в ActiveRecord

0

я получаю много путаницы, включая хэши и объединения в Active Record, я хотел бы знать, как я могу делать такой запрос в Rails

SELECT 
p.name,
o.id AS order_id,
op.id AS order_product_id,
op.name
FROM orders o 
INNER JOIN order_products AS op
ON op.order_id = o.id 
INNER JOIN product_providers AS pp
ON pp.id = op.product_provider_id 
INNER JOIN providers as p 
ON p.id = pp.provider_id 
WHERE o.id = 1
  • 0
    Можете ли вы объяснить свой вопрос?
  • 0
    Конечно, я хочу как-то перевести этот sql-запрос в запрос activerecord, например, Order.where(id: params[:id]).joins(example: {[:e1, e2]}, e2])
Теги:
activerecord

1 ответ

1
Лучший ответ

Я думаю, что у вас есть следующие отношения:

--An порядок имеет много order_products,

--An order_product имеет один (принадлежит_to) product_provider,

--A у product_provider есть один (принадлежит_to) провайдеру

Если эти отношения правильны, вам нужно что-то вроде этого:

Order.joins(order_products: {product_provider: :provider})
     .where(orders: {id: 1})
     .select('orders.id AS order_id, order_products.id AS order_products_id, order_products.name')

Хотя вы ничего не выбираете от product_providers или providers, поэтому не знаете, почему вы хотите присоединиться к ним.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню