在ActiveRecord中按created_at分组记录

时间:2017-11-14 19:35:09

标签: ruby-on-rails postgresql activerecord group-by rails-activerecord

我试图找出在某一天创建了多少条记录,以获得类似的内容:

User uploaded 5 objects two days ago

User uploaded 12 objects 21 days ago

我试过了:

Flight.group("created_at::date")

但得到错误:

ActiveRecord::StatementInvalid: PG::GroupingError: ERROR:  column "flights.id" must appear in the GROUP BY clause or be used in an aggregate function

但是当我尝试将id直接添加到群组字段或添加其他.group时,我最终会对idcreated_at进行分组,这显然因为每个匹配只有一个实例,所以不会对任何内容进行分组。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

如果您正在尝试计算事物,请计算它们:

Flight.group('created_at::date').count

这将为您提供一个哈希,其中日期为键,并计为值。否则,数据库不知道应该使用组中各行的哪些值来表示该组。如果添加count聚合函数,则模糊性消失,数据库知道您希望它做什么。