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

时间:2018-03-05 20:46:03

标签: ruby-on-rails

使用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特有的吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您只想获得聚合计数,可以直接执行此操作,

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

希望它有所帮助!