与ActiveRecord和Postgres合作

时间:2014-11-09 15:48:17

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

我已经看到了几个答案,但找不到任何可以帮助我的东西

我的模型有country列和city列。

执行一些SQL查询,我想在第一个国家/地区为每个国家/地区分组添加该查询

Model.where("name LIKE ?", "%#{query}%").group(["country", "city"])

但我得到

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

我不知道该怎么办,因为我不想按照国家和城市的ID分组

我确信我在这里遗漏了一些东西,不知道是什么

使用字段,如

所示
 Model.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")

仍然会出现同样的错误

2 个答案:

答案 0 :(得分:4)

您应该在分组前选择

Model.where("name LIKE ?", "%#{query}%")
     .select("country, city")
     .group("country, city")

答案 1 :(得分:0)

如果您仍然遇到麻烦:

Model.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")

我猜你已经定义了一个默认范围,你必须这样做:

Model.unscoped.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")

编辑:

如果它不起作用,您可以执行此操作并发布输出:

Model.where("name LIKE ?", "%#{query}%").group(["country", "city"]).to_sql