я получаю много путаницы, включая хэши и объединения в 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
Я думаю, что у вас есть следующие отношения:
--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
, поэтому не знаете, почему вы хотите присоединиться к ним.
Order.where(id: params[:id]).joins(example: {[:e1, e2]}, e2])