Ruby on Rails: Abrufen des Maximalwerts aus einer DB-Spalte


125

Derzeit kann ich die direkte SQL-Abfrage in meiner Datenbank durchführen:

SELECT MAX(bar) FROM table_name

Und es wird mit dem Maximalwert in dieser Tabelle zurückgegeben. Wenn ich in Rails einen meiner Meinung nach gleichwertigen Anruf tätige, funktioniert dies jedoch nicht. Ich rufe an:

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

Dies kehrt einfach zurück mit:

[#<Bar >]

In der Spalte, die ich anrufe, befindet sich eine Reihe von Identifikationsnummern, ich suche die größte. Gibt es eine andere Möglichkeit, in Rails darauf zuzugreifen?

Antworten:



6

noch einen Weg

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

5
Warum willst du das tun? Ausführlicher und führt genau die gleiche Abfrage aus, Bar.maximum(:bar)sodass ich keinen Grund sehe, diese Antwort überhaupt zu "empfehlen" ...
Nathanvda

19
Zum Beispiel, wenn Sie sowohl Min als auch Max wollen:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

Die Person, die die Frage stellte, wollte nur max.
Chris Peters

1
Er hat die Frage richtig beantwortet. Wahrscheinlich ist es nicht die beste Antwort, aber er hat nichts falsch gemacht.
david0116
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.