gpt4 book ai didi

ruby-on-rails - Rails 包括按 has_many 关系的第一个关联排序

转载 作者:行者123 更新时间:2023-12-04 06:16:45 25 4
gpt4 key购买 nike

很难弄清楚如何在事件记录中构建此查询。我有以下两个模型:

class Event
has_many :event_times
end

class EventTime
belongs_to :event
end

EventTime 有一个 start_time 时间戳。我想选择事件,使用分页并按 EventTime start_time 对它们进行排序。所以 EventTimes 最快出现的事件是第一个。我能够组合一个查询来获取按 EventTime 排序的事件,但由于一个事件可以有多个事件时间,因此使用分页会导致不同数量的记录。

另一种解决方案是执行 group_by,然后将分页应用于该结果。但这需要将所有 EventTimes 加载到不会缩放的内存中。

最佳答案

不要害怕连接;只要您在 event_times 表上为 event_id 设置了索引,它就会很快。您可以按事件分组并按最短开始时间排序。可以通过将 offsetlimit 数字传递给查询来实现分页。

Event
.select('event.*, MIN(event_times.start_time) AS min_start_time')
.joins(:event_times)
.group('event.id')
.order('min_start_time')
.offset(offset)
.limit(limit)

关于ruby-on-rails - Rails 包括按 has_many 关系的第一个关联排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32638782/

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