仅显示最高价值的用户条目

时间:2015-08-16 09:31:19

标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord greatest-n-per-group

我正在创建一个用户可以提交多个条目的比赛。只显示吨位最高的入口。在索引视图中,所有条目都必须根据吨位值降序排序。

我的提交控制器显示以下内容:

@submissions = @contest.submissions.maximum(:tonnage, group: User)

这里的问题是我没有得到所有提交值的数组。我需要一些可以迭代的东西。

e.g。一个列表,其中只包含一个来自用户的提交,该提交是具有最高吨位值的提交。

当我刚刚分组时,我得到以下错误:

GroupingError: ERROR:  column "submissions.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT "submissions".* FROM "submissions"  WHERE "submission...

更新:

我发现了一个sql查询,它大概做了我想做的事。

select * 
from submissions a
inner join
  ( select user_id, max(tonnage) as max_tonnage
    from submissions
    group by user_id) b 
on
a.user_id = b.user_id and
a.tonnage = b.max_tonnage

如何在activerecord中修复此问题?

评论信息: enter image description here

0 个答案:

没有答案