Подтвердить что ты не робот

Найти объект ActiveRecord по максимальному значению поля дочернего объекта?

Как я могу найти объект, связанный с результатами вычисления ActiveRecord, а не значение?

Например, у меня есть @parent, у которого много детей. Я хотел бы найти ребенка с максимальным "значением".

Я понимаю, что могу сделать @parent.children.maximum(: value), но это возвращает максимальное значение. Есть ли метод, близкий к максимальному и минимальному, который возвращает весь объект вместо значения, чтобы я мог использовать разные поля из максимального объекта?

4b9b3361

Ответ 1

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

Ответ 2

Не уверен, что это наиболее эффективно, но как только вы получите максимальное значение, вы можете передать это в хэш для получения объекта

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

Ответ 3

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

Ответ 4

Это мой личный фаворит, когда дело доходит до читаемости, используя ruby ​​# max_by:

@parent.children.max_by(&:value)