gpt4 book ai didi

ruby-on-rails - 按关联属性排序模型

转载 作者:行者123 更新时间:2023-12-03 16:02:59 25 4
gpt4 key购买 nike

我有一个事件模型,它有很多 EventDates。

EventDate 具有 start_time属性和事件具有 next_occurrence使用最近的 start_time 找到属于它的 EventDate 的方法.

我想找到按 next_occurrence 排序的前 5 个事件(最快的)。

我想我可以通过这样的事情来实现这一目标:

Event.joins(:event_dates).order('event_dates.start_time').limit(5)

但这不对 - 如果我再收集 next_occurrence日期,它们是乱序的。

我如何查询它以返回按 next_occurrence 排序的事件?

最佳答案

尝试这个:

next_5_events = EventDate.select('event_id, min(date) as next_event_date')
.includes(:event)
.where('next_event_date > ?', Time.now)
.group(:event_id)
.order(:next_event_date)
.limit(5)
.map(&:event)

说明:

查找每个 Event最近的 EventDate在将来
EventDate.select('event_id, min(date) as next_event_date')
.where('next_event_date > ?', Time.now)
.group(:event_id)

仅保留由 next_event_date 排序的 5 个第一个事件
         .order(:next_event_date)
.limit(5)

照原样,请求将只返回 event_idnext_event_date ,所以以下几行急切加载并返回 Event对象
         .includes(:event)
.map(&:event)

关于ruby-on-rails - 按关联属性排序模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com