Найти объект ActiveRecord по максимальному значению поля дочернего объекта? - PullRequest
28 голосов
/ 21 февраля 2011

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

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

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

Ответы [ 4 ]

53 голосов
/ 21 февраля 2011
@parent.children.order("value DESC").first
26 голосов
/ 21 февраля 2011

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

@maxvalue = @parent.children.maximum(:value)
@myObject = @parent.children.where(:value => @maxvalue)
8 голосов
/ 31 июля 2015

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

@parent.children.max_by(&:value)
5 голосов
/ 21 февраля 2011
@parent.children.first(:conditions => {:value => @parent.children.maximum(:value)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...