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

时间:2011-02-20 21:44:25

标签: ruby-on-rails activerecord

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

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

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

4 个答案:

答案 0 :(得分:52)

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

答案 1 :(得分:25)

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

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

答案 2 :(得分:8)

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

@parent.children.max_by(&:value)

答案 3 :(得分:5)

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