分组时选择具有最大值的记录

时间:2014-10-27 18:04:07

标签: ruby-on-rails activerecord

所以我有一个名为'Project'的模型,其中包含字段'unique_id'和'version'(以及其他不相关的字段,如name)。 unique_id对每个项目都是唯一的,每个项目都有多个版本,即。

unique_id |版本
1 | 1
1 | 2
2 | 1

我要做的是选择每个项目的最新版本并将其添加到@projects以供我的视图使用(显示每个项目)。

我不知道如何做到这一点,但我的思考过程是使用Projects.group(:unique_id).count来获取 unique_id 和计数(也就是版本)的哈希并使用该信息来拉取每个通过循环记录。这对我来说似乎很笨拙。我也知道有一个最大的功能,但不会拉记录,只有最大值。帮助?!

2 个答案:

答案 0 :(得分:3)

unique_id分组并选择MAX版本的记录:

Project.select('MAX(version), unique_id, id, name').group(:unique_id).all

答案 1 :(得分:3)

这应该符合您的要求:

Projects.group(:unique_id).having('Max(version) >= version')