Ruby on Rails: nhận giá trị tối đa từ cột DB


125

Hiện tại tôi có thể thực hiện truy vấn SQL thẳng trên DB của mình:

SELECT MAX(bar) FROM table_name

Và nó trả về với giá trị tối đa trong bảng đó. Tuy nhiên, khi tôi thực hiện những gì tôi coi là một cuộc gọi tương đương trong Rails, thì nó không hoạt động. Tôi đang gọi:

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

Điều này chỉ đơn giản trả về với:

[#<Bar >]

Trong cột tôi đang gọi là một loạt các số nhận dạng, tôi đang tìm số lớn nhất. Có một số cách khác để truy cập này trong Rails?

Câu trả lời:


272

Giả sử tên mô hình của bạn là Barvà nó có một cột được đặt tên bar, điều này sẽ hoạt động:

Bar.maximum("bar")

Xem phần Hướng dẫn Rails tuyệt vời về Tính toán để biết thêm.


À ha! Phải bạn, điều đó đã làm nó. Tôi sẽ kiểm tra câu trả lời của bạn sớm nhất vì SO sẽ cho tôi biết. Cảm ơn!
keybored

6

một cách nữa

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

5
Tại sao bạn muốn làm điều này? Nhiều chi tiết hơn và thực hiện chính xác cùng một truy vấn vì Bar.maximum(:bar)vậy tôi thấy không có lý do gì để "đề xuất" câu trả lời này cả ...
nathanvda

19
ví dụ: nếu bạn muốn cả tối thiểu và tối đa:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

Người đặt câu hỏi chỉ muốn tối đa.
Chris Peters

1
Ông đã cung cấp một câu trả lời chính xác cho câu hỏi. Có lẽ đó không phải là câu trả lời hay nhất, nhưng anh không làm gì sai với nó.
david0116
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.