Ruby on Rails: obtendo o valor máximo de uma coluna DB


125

Atualmente, posso fazer a consulta SQL direta no meu banco de dados:

SELECT MAX(bar) FROM table_name

E ele retorna com o valor máximo nessa tabela. Quando faço o que considero uma chamada equivalente no Rails, no entanto, ele não funciona. Eu estou chamando:

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

Isso simplesmente retorna com:

[#<Bar >]

Na coluna em que estou ligando, há uma série de números de identificação, estou procurando pelo maior. Existe alguma outra maneira de acessar isso no Rails?

Respostas:


272

Supondo que o nome do seu modelo seja Bare ele tenha uma coluna denominada bar, isso deve funcionar:

Bar.maximum("bar")

Veja a excelente seção Rails Guides em Calculations para mais informações.


Ah ha! Você está certo, foi o que fez. Vou verificar sua resposta como a resposta assim que SO permitir. Obrigado!
keybored

6

mais uma maneira

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

5
Por que você quer fazer isso? Mais detalhado, e executa exatamente a mesma consulta que Bar.maximum(:bar)eu não vejo razão para "recomendar" esta resposta de forma alguma ...
nathanvda

19
Por exemplo, se você quer tanto min e máx:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

A pessoa que fez a pergunta só queria max.
Chris Peters

1
Ele forneceu uma resposta correta para a pergunta. Provavelmente não é a melhor resposta, mas ele não fez nada de errado com isso.
david0116 19/11/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.