【发布时间】:2019-03-29 14:09:31
【问题描述】:
我有一个模型Event,它有一个属性ticket_id。我将我的events 按此属性分组,如下所示:
Event.group(:ticket_id).having('count(events.ticket_id) > 1')
这是一个完美的查询,但我不明白如何直接处理这样的查询结果。
我知道,例如,我可以在其上调用方法count 并获取带有ticket_ids 和相应事件数量的哈希。但我需要得到一个结构,其中 ticket_ids 作为键,事件数组作为值,如下所示:
{ 1 => [#<Event:1>, #<Event:2>], 2 => [#<Event:3>, #<Event:4>], ... }
我可以使用普通的 ruby group_by 实现这样的结果,但考虑到我有数百万个事件这一事实,这似乎不是最好的解决方案。是否有可能使用 ActiveRecord 或普通 SQL 以某种方式实现结果?
附:我用的是 PostgreSQL
【问题讨论】:
-
考虑到您有数百万个事件,在我看来,您不太可能希望通过某个属性在一个页面组上呈现所有事件。您真正想在该页面上显示什么?
-
我不会渲染它们。我只是想知道是否可以使用 ActiveRecord 或普通 SQL 或两者都获得这样的结构。
标签: sql ruby-on-rails ruby postgresql activerecord