2017-07-17 63 views
0

我有汽车和car_cities车型。我想获得至少有一辆汽车的城市。Rails | PG :: GroupingError

该协会;

Cars 
belongs_to :car_city 

CarCities 
has_many :cars 

加入查询;

CarCity.joins(:cars).group("cars.car_city_id").having("count(cars.id) > 0") 

这对我的本地环境中工作。但没有在生产上工作。

错误;

An ActionView::Template::Error occurred in search#search_city: 

PG::GroupingError: ERROR: column "car_cities.id" must appear in the GROUP BY clause or be used in an aggregate function 
LINE 1: SELECT “car_cities".* FROM "car_cities” INNER JOIN "cars"… 

^ 
: SELECT “car_cities".* FROM “car_cities” INNER JOIN “cars” ON “cars"."car_city_id” = “car_cities"."id” WHERE "car_cities"."car_country_id” = $1 GROUP BY cars.car_city_id HAVING count(cars.id) > 0 

app/views/search/_search_filters.html.erb:88:in `block in _app_views_search__search_filters_html_erb__3215729544581234245_70286113854020' 
+0

为什么不根据car_cities.id而不是cars.car_city_id进行分组。两者实际上是相同的记录吗? –

回答

1

通过cars.car_city_id和car_cities.id,都对应试试这个生产控制台如果可能..

CarCity.joins(:cars).group("car_cities.id").having("count(cars.id) > 0") 
1

能否请您尝试此查询,

CarCity.joins(:cars).group("car_cities.id").having("count(cars.id) > 0") 

分组到相同的记录。另外,当使用INNER JOIN和'Car'模型时,只有在车辆数超过1的情况下才会选择汽车记录。

相关问题