開発中に問題なく動作するレールアプリがありますが、PostgreSQLを使用するHeroku経由で配備したときに多くのエラーが発生しています。Heroku PostgreSQL RailsアプリケーションでGROUP_BYエラーが発生しました
返されたばかりのエラーメッセージ:
ActionView::Template::Error (PGError: ERROR:
column "practices.id" must appear in the GROUP BY clause or be used in an aggregate function:
SELECT "practices".*
FROM "practices" WHERE ("practices".activity_id = 1)
AND ("practices"."created_at" BETWEEN '2011-01-01' AND '2011-01-31')
GROUP BY DATE(created_at) ORDER BY created_at DESC):
私は次のように呼び出したときにスローされます。
def month_days_not_practiced(date = Date.today)
p = practices.where(:created_at => date.at_beginning_of_month..date.at_end_of_month).group("DATE(created_at)").to_a.count
days_in_month(date.year, date.month) - p
end
私は実際にそれが両方の開発に取り組んでいますので、クリーンなコードを維持したいと思いますプロダクションDBs ...誰も光を放つことができますか?
私はこれを試してみました:無駄に
def month_days_not_practiced(date = Date.today)
p = practices.where(:created_at => date.at_beginning_of_month..date.at_end_of_month).group("practices.id, DATE(created_at)").to_a.count
days_in_month(date.year, date.month) - p
end
...
TIAを。
ああ歓声!それはそうです。 –
私はこれで完全に混乱しました。私が選択したすべての列でグループ化しなければならない場合は、それらのいずれかでグループ化していないようですか? yを使用すると、エラーが取り除かれますが、今度は本質的に '.all'が残っています。私はここに何かを見逃していると確信していますが、それはこれまで私を暗示しています。 – wuliwong