Ruby on Rails: mendapatkan nilai maksimal dari kolom DB

125

Saat ini saya dapat membuat query SQL langsung pada DB saya:

SELECT MAX(bar) FROM table_name

Dan ia kembali dengan nilai maksimal dalam tabel itu. Ketika saya membuat apa yang saya anggap sebagai panggilan setara di Rails, bagaimanapun, itu tidak berhasil. Saya memanggil:

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

Ini hanya kembali dengan:

[#<Bar >]

Di kolom yang saya panggil adalah serangkaian nomor identifikasi, saya mencari yang terbesar. Apakah ada cara lain untuk mengakses ini di Rails?

keybored
sumber

Jawaban:

272

Dengan asumsi nama model Anda adalah Bardan memiliki kolom bernama bar, ini akan berfungsi:

Bar.maximum("bar")

Lihat bagian Panduan Rel yang sangat baik pada Perhitungan untuk info lebih lanjut.

Dylan Markow
sumber
Ah ha! Benar kamu, itu berhasil. Saya akan memeriksa jawaban Anda segera setelah SO membiarkan saya. Terima kasih!
keybored
6

satu lagi jalan

Bar.select("Max(bar) as max_bar").first.max_bar
Manish Kasera
sumber
5
Mengapa Anda ingin melakukan ini? Lebih banyak bertele-tele, dan menjalankan kueri yang sama persis Bar.maximum(:bar)sehingga saya tidak melihat alasan untuk "merekomendasikan" jawaban ini sama sekali ...
nathanvda
19
misalnya, jika Anda ingin min dan maks:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit
Orang yang mengajukan pertanyaan hanya menginginkan maks.
Chris Peters
1
Dia memang memberikan jawaban yang benar untuk pertanyaan itu. Mungkin itu bukan jawaban terbaik, tetapi dia tidak melakukan kesalahan dengan itu.
david0116