Rails 5 ActiveRecord查询以查找最新的嵌套关联

时间:2019-05-08 17:56:39

标签: sql activerecord ruby-on-rails-5 associations

我在编写涉及嵌套关联的查询时遇到了麻烦。有人知道我在这里想念的吗?我有一个模型Appeal,其中有许多Hearing,并且Hearing属于HearingDay。我想在所有听证会disposition == "held"中找到所有上诉,但是如果上诉中有很多听证会,我只想检查最近听证会的disposition,这取决于听证会的{{1} }属性,它是一个hearing_day.scheduled_for字段。例如,如果一个上诉有2次听证,而最老的一次听证会是date,最近的一次听证会有其他听证会,那么我不希望它包含在结果中。

以下是我在上诉中尝试过的所有查询:

这给了我一个我不期望的额外结果:

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" })

感谢您提供的任何帮助。

0 个答案:

没有答案