Ответ 1
@parent.children.order("value DESC").first
Как я могу найти объект, связанный с результатами вычисления ActiveRecord, а не значение?
Например, у меня есть @parent, у которого много детей. Я хотел бы найти ребенка с максимальным "значением".
Я понимаю, что могу сделать @parent.children.maximum(: value), но это возвращает максимальное значение. Есть ли метод, близкий к максимальному и минимальному, который возвращает весь объект вместо значения, чтобы я мог использовать разные поля из максимального объекта?
@parent.children.order("value DESC").first
Не уверен, что это наиболее эффективно, но как только вы получите максимальное значение, вы можете передать это в хэш для получения объекта
@maxvalue = @parent.children.maximum(:value)
@myObject = @parent.children.where(:value => @maxvalue)
@parent.children.first(:conditions => {:value => @parent.children.maximum(:value)})
Это мой личный фаворит, когда дело доходит до читаемости, используя ruby # max_by:
@parent.children.max_by(&:value)