Rails(PG :: GroupingError:ERROR:列必须出现在GROUP BY子句中或用于聚合函数

时间:2018-01-21 16:59:43

标签: ruby-on-rails heroku deployment pg

在我的本地这个查询工作完美的sqlite3

 def Event.most_like
   select("events.*, count(like_events.event_id) as likes_count")
   .joins(:like_events).group(:event_id).order("likes_count 
    DESC").limit(4)
 end

但是在部署heroku时遇到了一些错误 PG::GroupingError: ERROR: column "events.id" must appear in the GROUP BY clause or be used in an aggregate function

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

作为消息,Map子句中的所有字段都必须出现在Select或聚合函数中。在这种情况下,您选择GROUP BY的所有字段,以便包含Event的字段需要满足上述要求。

要解决此问题,我建议更改功能以仅选择事件的ID和likes_count,如下所示:

events.id

如果您仍需要获取事件记录,则可以根据其ID获取这些记录。