У меня проблемы с написанием запроса, который включает вложенные ассоциации. Кто-нибудь знает, что мне здесь не хватает? У меня есть модель Appeal
, у которой много Hearing
с, а Hearing
принадлежит HearingDay
. Я хочу найти все апелляции, где слушание disposition == "held"
, но если апелляция имеет много слушаний, я хочу проверить только disposition
самого последнего слушания, которое определяется атрибутом hearing_day.scheduled_for
слушания, который является date
поле. Например, если апелляция состоит из 2 слушаний, и у самого старого - held
, а у самого последнего - другой, то я не хочу, чтобы он был включен в результаты.
Вот все запросы, которые я пробовал на апелляции:
Этот дает мне один дополнительный результат, которого я не ожидаю:
joins(:hearings => :hearing_day)
.where("hearing_days.scheduled_for = (SELECT MAX(hearing_days.scheduled_for) FROM hearing_days WHERE hearing_days.id = hearings.hearing_day_id)")
.where(hearings: { disposition: "held" })
Этот дает мне дополнительный результат, которого я не ожидаю:
joins(:hearings => :hearing_day)
.where("hearing_days.scheduled_for = (SELECT MAX(hearing_days.scheduled_for) FROM hearing_days WHERE hearings.appeal_id = appeals.id AND hearing_days.id = hearings.hearing_day_id)")
.where(hearings: { disposition: "held" })
Этот результат не включает ожидаемый результат, но он успешно исключает тот, который был ошибочно включен в запросы выше:
joins(:hearings => :hearing_day)
.where("hearing_days.scheduled_for = (SELECT MAX(hearing_days.scheduled_for) FROM hearing_days WHERE hearings.appeal_id = appeals.id)")
.where(hearings: { disposition: "held" })
Спасибо за любую помощь, которую вы можете предоставить.