Rails groupdate gem:ActionView :: Template :: Error(PG :: GroupingError:ERROR:列“warehouse_campaigns.id”必须出现在GROUP BY子句中

问题描述 投票:0回答:1

使用groupdate gem:https://github.com/ankane/groupdate

我只是使用'group_by_day_of_week',并尝试输出结果,并得到此错误:

ActionView::Template::Error (PG::GroupingError: ERROR: column "warehouse_campaigns.id" must appear in the GROUP BY clause or be used in an aggregate function

这是代码:

@campaigns = WarehouseCampaign.group_by_day_of_week(:date_sent)

然后在HAML中:

  - @campaigns.each do |r|
    = r.title

注意,我不想简单地记录计数,我想列出每个组的实际记录。我已经搜索了一个小时的解决方案。这是postgres特有的吗?

ruby-on-rails
1个回答
0
投票

您可以使用上述查询获取groupdate gem的聚合计数。如果要根据星期几值对记录进行分组,则必须相应地触发数据库查询。

@campaigns = WarehouseCampaign.all.group_by { |x| x.date_sent.wday }

这将根据星期几(wday)对记录进行分组,您可以迭代记录。

如果您只想获得聚合计数,您可以简单地执行此操作,

@counts = WarehouseCampaign.group("EXTRACT(DOW FROM date_sent)").count

希望能帮助到你 !

© www.soinside.com 2019 - 2024. All rights reserved.