如何找到与ActiveRecord计算结果相关联的对象而不是值?
例如我有@parent有很多孩子。我想找到具有最大“价值”的孩子。
我知道我可以执行@ parent.children.maximum(:value),但这会返回最大值。是否有类似于maximum和minimum的方法返回整个对象而不是值,以便我可以使用最大对象中的不同字段?
答案 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)})