Ruby on Rails: obteniendo el valor máximo de una columna DB


125

Actualmente puedo hacer la consulta SQL directa en mi base de datos:

SELECT MAX(bar) FROM table_name

Y vuelve con el valor máximo en esa tabla. Sin embargo, cuando hago lo que considero una llamada equivalente en Rails, no funciona. Estoy llamando:

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

Esto simplemente regresa con:

[#<Bar >]

En la columna a la que llamo hay una serie de números de identificación, estoy buscando el más grande. ¿Hay alguna otra forma de acceder a esto en Rails?

Respuestas:


272

Suponiendo que el nombre de su modelo es Bary tiene una columna llamada bar, esto debería funcionar:

Bar.maximum("bar")

Consulte la excelente sección Guías de rieles en Cálculos para obtener más información.


Ah ja! Tienes razón, eso lo hizo. Marcaré tu respuesta como la que pronto SO me permita. ¡Gracias!
keybored

6

una forma más

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

55
Por qué querrías hacer esto? Más prolija, y ejecuta exactamente la misma consulta que Bar.maximum(:bar)así que no veo ninguna razón para "recomendar" esta respuesta en absoluto ...
nathanvda

19
por ejemplo, si quieres min y max:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

La persona que hace la pregunta solo quería max.
Chris Peters

1
Él proporcionó una respuesta correcta para la pregunta. Probablemente no sea la mejor respuesta, pero no hizo nada malo.
david0116
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.