2016-03-10 79 views
0

当我使用Chartkick将一些图安装到我的ruby on rails项目中时,我遇到了一个奇怪的错误,我无法解决或理解其他解释。列必须出现在GROUP BY子句中或用于聚合函数Ruby

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

<%= 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) %> 

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

+0

可以在运行图表代码时发布生成的SQL命中数据库吗? – emaillenin

+0

这是你在找什么? (“bets”,“profit_or_loss”)AS sum_profit_or_loss,(DATE_TRUNC('day',(date_of_bet :: timestamptz - INTERVAL'0小时')在时区'等/ UTC')+ INTERVAL'0小时')在时区'等/ UTC'当天从“下注”WHERE(date_of_bet不为空)GROUP BY(DATE_TRUNC('day ',(date_of_bet :: timestamptz - INTERVAL'0 hour')在时区'等/ UTC')+ INTERVAL'0小时')在时区'等/ UTC'' –

回答

2

问题是图表变得困惑,因为我有@bets_by_month按降序排列。一旦我改变了一切都很好。

相关问题