0

私は RoR 初心者で、MySQL を使用してアプリを開発していますが、Heroku は Postgres を使用しているため、私のアレルは適切に機能していません。

出力されたエラーについて調べてみましたが、私の場合は HABTM テーブル間でクエリを行っているため、うまくいきません。

基本的に、製品には複数のカテゴリがあります。私の関係はすべて設定され、すべてがローカルで機能しますが、デプロイ時に 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であり、読んだドキュメントを読んで、すべての列をここに配置する必要があることを示しています。でもHABTMの関係なので他のカラムしかなく、入れてみるとアレルスポットがちゃんと機能しています。

これに関するスレッドが既にあることは知っていますが、私の問題を解決したスレッドはありません。

前もって感謝します。

よろしく、 ミゲル A.

4

1 に答える 1

0

これはこれに関連しています:

Heroku (PG::Error: ERROR: column must appear in the GROUP BY clause or be used in a aggregate function

彼らは、あなたがやろうとしていることをサポートしていない、Heroku の古いバージョンの postgres を使用しています。Heroku Shared PostgreSQL アドオンを使用すると、この問題を解決できます。

とはいえ、開発環境はできる限り Heroku 環境に近いものにすることをお勧めします。これは、同じバージョンの ruby​​ と同じ DB を使用することを意味します...

于 2012-05-29T16:50:01.550 に答える