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


125

В даний час я можу робити прямий SQL-запит у своїй БД:

SELECT MAX(bar) FROM table_name

І повертається з максимальним значенням у цій таблиці. Коли я роблю те, що вважаю рівноцінним дзвінком у Rails, однак це не працює. Я телефоную:

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

Це просто повертається за допомогою:

[#<Bar >]

У стовпці, до якого я дзвоню, є серія ідентифікаційних номерів, я шукаю найбільшу. Чи є якийсь інший спосіб отримати доступ до цього в Rails?

Відповіді:


272

Якщо припустити, що назва вашої моделі є, Barі вона має стовпець з назвою bar, це має працювати:

Bar.maximum("bar")

Для отримання додаткової інформації дивіться чудовий розділ "Посібники по рейках", присвячений Розрахункам


А-а-а! Право, ти це зробив. Я перевірю вашу відповідь, як та, що скоро дозволить мені. Дякую!
клавіатура

6

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

Bar.select("Max(bar) as max_bar").first.max_bar

5
Чому б ти хотів це зробити? Більш докладно і виконує такий самий запит, як Bar.maximum(:bar)тому я не бачу жодних причин "рекомендувати" цю відповідь ...
nathanvda

19
наприклад, якщо ви хочете і min, і max:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Шалев Шаліт

Людина, яка задає питання, хотіла макс.
Кріс Петерс

1
Він дав правильну відповідь на запитання. Напевно, це не найкраща відповідь, але він нічого з цим не зробив.
david0116
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.