我遇到了我不希望做的事情,我不知道该如何处理活动记录(实际上我无法确切地说出如何使用sql来做)。我想根据某个字段的最高值以及其他一些条件来选择记录。以下是一些伪造的东西,它们解释了我的情况。给出以下记录:
id:1 | name:recipe1 | saved:true | revision:1 id:2 | name:recipe1 | saved:false | revision:2 id:3 | name:recipe1 | saved:true | revision:3 id:4 | name:recipe1 | saved:false | revision:4 id:5 | name:recipe2 | saved:true | revision:1 id:6 | name:recipe2 | saved:true | revision:2 id:7 | name:recipe3 | saved:false | revision:1 id:8 | name:recipe4 | saved:true | revision:1
我希望能够获取已保存的修订版本号最高的记录。这意味着ID为:3、6和8的记录
我的第一个本能是做某种子查询,该子查询在修订之类的东西上获得MAX。除此之外,我真的不知道该怎么做,因此我们将不胜感激。
编辑:
这是我想要的SQL:
SELECT id, name, MAX(revision) as "revision" FROM revisions WHERE saved = 1 GROUP BY name
现在,有什么合理的方法可以使用ActiveRecord做到这一点吗?
Revision.maximum(:revision,:conditions => ["saved=1"],:group => 'name')