У меня есть запрос, который работает так, как я хочу, выполняя SQL напрямую, но любопытно (только для моих собственных целей обучения), если это то же самое можно сделать в инструкции ActiveRecord?Rails 5 эквивалент для этого сложного SQL-запроса?
Часть, с которой я изо всех сил стараюсь, является частью COALESCE этого запроса, которая просто гарантирует, что любые значения NULL из LEFT JOIN считаются нулями вместо этого, чтобы сохранить суммирование по порядку.
Любые идеи? Я использую Postgres.
SELECT Inventories.id, Inventories.name, Inventories.unit_of_measure,
COALESCE(Sum(Stocks.count),0) as totalcount
FROM Inventories
LEFT JOIN Stocks
ON Inventories.id = Stocks.inventory_id
WHERE Inventories.property = 'material' AND Inventories.organization_id = #{current_organization.id}
GROUP BY Inventories.id, Stocks.inventory_id
ORDER BY totalcount ASC
LIMIT(5)")
Это ближайший я получил для эквивалента AR. Когда я пытаюсь добавить сумму или что-то в этом роде, вот когда она ошибается.
@lowmaterials = current_organization.inventories.materials.left_joins(:stocks).group(:id, :inventory_id).order(count: :asc).limit(5)
Awesome, спасибо - не понял, что это было возможно, и поэтому теперь я узнал кое-что. :) – PDD