通过子对象的最大字段值查找ActiveRecord对象?

如何找到与ActiveRecord计算结果相关联的对象而不是值?

例如,我有@parent有很多孩子。 我想找到具有最大’价值’的孩子。

我知道我可以做@ parent.children.maximum(:value),但这会返回最大值。 是否有类似于maximum和minimum的方法返回整个对象而不是值,以便我可以使用最大对象中的不同字段?

@parent.children.order("value DESC").first 

不确定这是否是最有效的,但是一旦你有了最大值,就可以在散列中传递它以获得对象

 @maxvalue = @parent.children.maximum(:value) @myObject = @parent.children.where(:value => @maxvalue) 

通过使用ruby的#max_by ,这是我个人最喜欢的可读性:

 @parent.children.max_by(&:value) 
 @parent.children.first(:conditions => {:value => @parent.children.maximum(:value)})