【发布时间】:2015-08-06 09:30:50
【问题描述】:
Message.order("created_at DESC").where(user_id: current_user.id).group(:sender_id, :receiver_id).count
适用于我的开发环境 SQLite3,用于 Rails 3.2 应用程序,但在使用 Postgres 推送到 Heroku 时失败,并出现以下错误:
PG::GroupingError: ERROR: column "messages.created_at" must appear in the GROUP BY clause or be used in an aggregate function
它似乎在查询中需要:created_at。什么都想不出来。有什么想法吗?
谢谢
【问题讨论】:
-
您是否尝试根据查询添加 :created_at ?
Message.order("created_at DESC").where(user_id: current_user.id).group(:sender_id, :receiver_id, :created_at).count -
@hd1:虽然这将使 Postgre 接受查询,但结果可能不是预期的:从用户 1 到用户 2 的 2 条消息不会被组合在一起,除非它们是在确切的时间,这不太可能(而且可能不是想要的行为)。
-
对以上两个 cmets 都是。添加 :created_at 将使查询适用于 Postgres,但结果不正确。实际上,它不再分组,因为每条消息都有一个唯一的 :created_at 列。
-
@slindsey3000:我在下面发布的答案对您不起作用吗?
-
我正在等待我网站上的流量减少一点,先生,然后将其推向生产。我必须有一个 Rails.env 标志,因为我在本地运行 SQLite。会建议。谢谢你,先生。希望它有效!
标签: ruby-on-rails postgresql heroku sqlite