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?

keybored
fonte

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.

Dylan Markow
fonte
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
Manish Kasera
fonte
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