0

我是一名 RoR 初学者,正在使用 MySQL 开发我的应用程序,但 Heroku 使用 Postgres,所以我的 arel 不能正常工作。

我已经搜索了输出的错误,但在我的情况下,因为我在 HABTM 表之间进行查询,所以事情进展不顺利。

基本上,一个产品有_and_belongs_to_many 类别。我的关系已经设置好,一切都在本地工作,但是在部署时会发生 500 错误。

因此,事不宜迟,问题是:

(......以前在本地和heroku上运行良好的查询......)

if params[:fc].present? #(checks if checkboxes have been ticked)

arel=arel.joins('INNER JOIN categories_products ON products.id=categories_products.product_id')

arel=arel.where('categories_products.category_id in (:fc_list)', :fc_list => params[:fc]).uniq

arel=arel.group('product_id').having('count(category_id) = :size', :size => params[:fc].size)

end

所以这个想法是允许用户选中一个复选框列表,然后显示选中类别中的所有产品。

我的 heroku 错误是:“products.id”必须出现在 GROUP BY 子句中或在聚合函数中使用。

这告诉我错误是 GROUP BY 和 drom 我阅读的文档,我必须将所有列放在这里。但由于它是 HABTM 关系,因此只有其他列存在,当我放置它时,arel 点功能正常。

我知道这已经有线程了,但没有一个能解决我的问题。

先感谢您。

问候,米格尔 A.

4

1 回答 1

0

这与此有关:

Heroku (PG::Error: ERROR: column 必须出现在 GROUP BY 子句中或在聚合函数中使用

他们在 Heroku 中使用旧版本的 postgres,不支持您尝试执行的操作。使用 Heroku Shared PostgreSQL 插件可以解决这个问题。

虽然,我也建议您的开发环境看起来尽可能像 Heroku 环境。这意味着使用相同版本的红宝石和相同的数据库......

于 2012-05-29T16:50:01.550 回答