我最近将我的数据库从sqlite3迁移到了我正在开发的Rails应用程序的postgreSQL。在我的其中一页上,我正在使用“ ChartKick”绘制图形。在切换到postgreSQL之前,我的表和图形运行良好。现在页面失败,我得到一个错误:
PG :: GroupingError:错误:“ stats.created_at”列必须出现在> GROUP BY子句中或在聚合函数中使用
我使用过Google并尝试对其进行故障排除,但是无法使我的图形正常运行。
“ << =%line_chart @ stats.group(:date).sum(:weight)%>”
PG :: GroupingError:错误:列“ stats.created_at”必须出现在GROUP BY子句中或在聚合函数中使用 第1行:...“。” user_id“ = $ 1 GROUP BY” stats“。” date“ ORDER BY created_at ... ^ :SELECT SUM(“ stats”。“ weight”)AS sum_weight,“ stats”。“ date” AS stats_date FROM“ stats” WHERE“ stats”。“ user_id” = $ 1 GROUP BY“ stats”。“ date” ORDER BY created_at DESC LIMIT $ 2 OFFSET $ 3
编辑 这是我在控制器中查询数据的内容:
#GET /stats.json 定义指数 @stats = current_user.stats.paginate(:page => params [:page],每页:5).order('created_at DESC')
结束
我还在表上使用Ruby Gem“ Paginate”。
答案 0 :(得分:0)
已解决:
Postgres无法对数据进行分组,因为我的代码未指定要获取的数据。通过将“ current_user”添加到我的ChartKick代码中,它能够进行选择并很好地呈现数据。
会失败
“ <%= line_chart @ stats.group(:date).sum(:weight)%>” <
工作!
“ <%= line_chart 当前用户 .stats.group(:date).sum(:weight),离散值:true%>”