2011-02-11 3 views
93

Je peux faire actuellement la requête SQL droite sur mon DB:Ruby on Rails: obtenir la valeur maximale d'une colonne DB

SELECT MAX(bar) FROM table_name 

Et il revient avec la valeur maximale dans ce tableau. Quand je fais ce que je considère être un appel équivalent dans Rails, cependant, cela ne fonctionne pas. J'appelle:

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

Ce retourne simplement avec:

[#<Bar >] 

Dans la colonne J'appelle est une série de numéros d'identification, je suis à la recherche de la plus grande. Existe-t-il un autre moyen d'accéder à cela dans Rails?

Répondre

203

En supposant que le nom de votre modèle est Bar et il a une colonne nommée bar, cela devrait fonctionner:

Bar.maximum("bar") 

Voir l'excellent Rails Guides section on Calculations pour plus d'informations.

+0

Ah ha! C'est vrai, ça l'a fait. Je vais vérifier votre réponse comme la prochaine fois que SO me le permettra. Merci! – keybored

2

une autre façon

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

Pourquoi voudriez-vous faire cela? Plus verbeux, et exécute exactement la même requête que Bar.maximum (: bar) 'donc je ne vois aucune raison de" recommander "cette réponse du tout ... – nathanvda

+11

par exemple, si vous voulez à la fois min et max:' Bar. select ("MAX (barre) max_bar, MIN (barre) min_bat"). first.attributes' –

+0

La personne posant la question voulait seulement max. –

Questions connexes