我是一名 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.