【发布时间】:2014-01-23 09:57:21
【问题描述】:
我的控制器中有代码按最高平均评论评分对专辑进行排名(使用此解决方案中的代码How to display highest rated albums through a has_many reviews relationship):
@albums = Album.joins(:reviews).select("*, avg(reviews.rating) as average_rating").group("albums.id").order("average_rating DESC")
这段代码在我的开发环境 (sqlite3) 中运行良好,但是当我将代码推送到 heroku 和 postgresql 时,我收到了这个错误:
PG::GroupingError: ERROR: column "reviews.id" must appear in the GROUP BY clause or be used in an aggregate function
我意识到这是一个相当普遍的问题,我对 SQL 有点缺乏经验,所以我在重构代码时遇到了麻烦,以便它可以在我的开发和生产环境中工作。
【问题讨论】:
标签: ruby-on-rails postgresql activerecord sqlite ruby-on-rails-4