问题
How can I find the object associated with the results of an ActiveRecord Calculation rather than a value?
For example I have @parent which has many children. I would like to find the child with the maximum 'value'.
I understand that I can do @parent.children.maximum(:value), but this returns the maximum value. Is there a method similar to maximum and minimum that returns the entire object instead of the value so that I can use different fields from the maximum object?
回答1:
@parent.children.order("value DESC").first
回答2:
Not sure if this is the most efficient but once you have the maximum value you can pass that along in a hash to get the object
@maxvalue = @parent.children.maximum(:value)
@myObject = @parent.children.where(:value => @maxvalue)
回答3:
This is my personal favorite when it comes to readability, by using ruby's #max_by :
@parent.children.max_by(&:value)
回答4:
@parent.children.first(:conditions => {:value => @parent.children.maximum(:value)})
来源:https://stackoverflow.com/questions/5060280/find-activerecord-object-by-maximum-field-value-of-a-child-object