Ich versuche, eine Unterabfrage zu verwenden, um den letzten Status einiger Datensätze auszuwählen. Ich habe die folgende Abfrage in SQL, die ich in Rails mit dem squeel Juwel neu erstellen möchten:Squeel-Unterabfrage
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
Im Anschluss an die Führung hier: https://github.com/activerecord-hackery/squeel#joins Ich habe die folgende Unterabfrage:
subquery = ChangerequestStatus.group(:changerequest_id).select { [changerequest_id, max(created_at).as(max_date)] }
, das funktioniert. Verbinden sie jedoch zum Change Modell bis ich ein NoMethodError: undefined method 'changerequest_id' for #<Hash>
Fehler
Changerequest.joins{[changerequest_statuses, subquery.as('max_status').on { id == max_status.changerequest_id}]}
Diese wie identische Syntax mir aussieht. Was gibt?