column必须出现在GROUP BY子句中,或者用在聚合函数Ruby中

时间:2016-03-10 15:33:15

标签: ruby-on-rails ruby postgresql

当我使用Chartkick在我的ruby on rails项目中安装一些图形时,我遇到了一个奇怪的错误,我无法解析或理解其他解释。

以下代码嵌入到我的视图文件中。

<%= area_chart @bets_by_month.group_by_day(:date_of_bet).sum(:profit_or_loss) %>

@bets_by_month实例在控制器中声明如此

@bets_by_year = Bet.where("EXTRACT(YEAR FROM date_of_bet) = ?", params[:year])
@bets_by_month = @bets_by_year.where("EXTRACT(MONTH FROM date_of_bet) = ?", params[:month])
@bets_by_month = @bets_by_month.order("date_of_bet DESC")

尝试加载页面时返回错误。

PG::GroupingError: ERROR:  column "bets.date_of_bet" must appear in the GROUP BY clause or be used in an aggregate function

然而,当我将此代码嵌入到我的视图文件中时,我没有遇到任何问题。

<%= area_chart Bet.group_by_day(:date_of_bet).sum(:profit_or_loss) %>

我需要使用该实例的原因是因为我希望每个月都有一个显示该月结果的不同图表。

1 个答案:

答案 0 :(得分:3)

问题是图表因为@bets_by_month按降序排序而感到困惑。一旦我改变了一切都很好。