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?

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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.