Ruby on Rails: ottenere il valore massimo da una colonna DB


125

Attualmente posso eseguire la query SQL diretta sul mio DB:

SELECT MAX(bar) FROM table_name

E ritorna con il valore massimo in quella tabella. Quando eseguo quella che considero una chiamata equivalente in Rails, tuttavia, non funziona. Sto chiamando:

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

Questo semplicemente ritorna con:

[#<Bar >]

Nella colonna che sto chiamando è una serie di numeri identificativi, sto cercando il più grande. C'è qualche altro modo di accedere a questo in Rails?

Risposte:


272

Supponendo che il nome del modello sia Bare abbia una colonna denominata bar, dovrebbe funzionare:

Bar.maximum("bar")

Vedi l'eccellente sezione Guide Rails sui calcoli per maggiori informazioni.


Ah ah! Bene, lo hai fatto. Verificherò la tua risposta come quella non appena SO me lo permetterà. Grazie!
keybored

6

un altro modo

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

5
Perché vorresti farlo? Più dettagliato, ed esegue esattamente la stessa query, Bar.maximum(:bar)quindi non vedo alcun motivo per "raccomandare" questa risposta a tutti ...
nathanvda,

19
per esempio, se vuoi sia min che max:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit,

La persona che ha posto la domanda voleva solo max.
Chris Peters,

1
Ha fornito una risposta corretta alla domanda. Probabilmente non è la risposta migliore, ma non ha fatto nulla di male.
david0116
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.