Я пытаюсь использовать подзапрос, чтобы выбрать последний статус некоторых записей. У меня есть следующий запрос в SQL, который я хотел бы, чтобы воссоздать в Rails, используя squeel перл:Squeel subquery
SELECT * FROM
changerequests c JOIN
(SELECT changerequest_id, max(created_at) max_created_at from
changerequest_statuses
GROUP BY changerequest_id) as max_status
ON c.id = max_status.changerequest_id
JOIN changerequest_statuses cs
ON cs.changerequest_id = c.id and max_status.max_created_at = cs.created_at
JOIN dim_change_statuses dcs
ON dcs.id = cs.dim_change_status_id
следуя руководству здесь: https://github.com/activerecord-hackery/squeel#joins У меня есть следующий подзапрос:
subquery = ChangerequestStatus.group(:changerequest_id).select { [changerequest_id, max(created_at).as(max_date)] }
Это работает. Однако присоединение его к модели Changerequest я получаю ошибку NoMethodError: undefined method 'changerequest_id' for #<Hash>
Changerequest.joins{[changerequest_statuses, subquery.as('max_status').on { id == max_status.changerequest_id}]}
Это выглядит идентичный синтаксис для меня. Что дает?