我是一名RoR初学者,正在使用MySQL开发我的应用程序,但Heroku使用 Postgres,所以我的bel工作不正常。
我搜索了输出的错误但在我的情况下,因为我正在做 HABTM表之间的查询,事情进展不顺利。
基本上,产品has_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点正常运行。
我知道已有线程,但没有人修复我的 问题
提前谢谢。
此致 Miguel A。
答案 0 :(得分:0)
这与此有关:
他们在Heroku中使用较旧版本的postgres,它不支持你想要做的事情。使用Heroku Shared PostgreSQL插件可以解决这个问题。
尽管如此,我还建议你的开发环境尽可能像Heroku环境一样。这意味着使用相同版本的红宝石和相同的DB ......