使用activerecord如何根据字段的最高值选择记录?

我遇到了一些我不知道如何处理活动记录(实际上我不能确切地说如何用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') 

使用CTE的ROW_NUMBER()函数OVER(由recipe1 ORDER BY修订版分区)。

有关详细信息,请访问此页面:

http://blog.sqlauthority.com/2009/08/08/sql-server-multiple-cte-in-one-select-statement-query/