Ruby on Rails: получение максимального значения из столбца БД

125

В настоящее время я могу сделать простой SQL-запрос в своей БД:

SELECT MAX(bar) FROM table_name

И он возвращается с максимальным значением в этой таблице. Однако когда я делаю то, что считаю эквивалентным вызовом в Rails, это не работает. Я звоню:

Bar.all(:select => "Max(bar)")

Это просто возвращается с:

[#<Bar >]

В столбце, к которому я звоню, приведен ряд идентификационных номеров, я ищу самый большой. Есть ли другой способ получить к нему доступ в Rails?

keybored
источник

Ответы:

272

Предполагая, что имя вашей модели Barи у нее есть столбец с именем bar, это должно работать:

Bar.maximum("bar")

Смотрите превосходный раздел Rails Guides о вычислениях для получения дополнительной информации.

Дилан Маркоу
источник
Ага! Правильно, вот и все. Я отмечу твой ответ, как только ТАК мне позволит. Спасибо!
Keybored
6

еще один способ

Bar.select("Max(bar) as max_bar").first.max_bar
Маниш Касера
источник
5
Зачем вам это нужно? Более подробный и выполняет тот же самый запрос, Bar.maximum(:bar)поэтому я не вижу причин «рекомендовать» этот ответ вообще ...
nathanvda
19
например, если вы хотите как минимум, так и максимум:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Шалев Шалит
Человек, задающий вопрос, хотел только макс.
Крис Питерс,
1
Он дал правильный ответ на вопрос. Наверное, это не лучший ответ, но он не сделал ничего плохого.
david0116