Rất nhiều Rails: Tôi vừa phát hiện ra named_scope
nhờ một người dùng SO khác. :)Sử dụng named_scope để nhận số hàng
Tôi muốn đếm số lượng hàng - ví dụ: SELECT COUNT(*)
. Ngoài ra, tôi vẫn muốn có thể chuỗi các phạm vi được đặt tên trong cuộc gọi.
Đây có phải là cách sử dụng hợp pháp (mặc dù kỳ lạ) của phạm vi được đặt tên không?
named_scope :count, :select => "COUNT(*) as count_all"
Vì vậy, sau đó tôi có thể làm (ví dụ):
@foobar = Foobar.count.scope.scope.scope
Số đếm được truy cập thông qua @foobar.first.count_all
.
(Edited để giải quyết ý kiến của Allan)
Bạn có thể làm:
@foobar = Foobar.scope.scope.scope.size
Nhưng điều này sẽ gây ra một truy vấn kết quả và không phải là SELECT COUNT(*)
truy vấn nhanh hơn. Tôi có một số lượng lớn các hàng trong cơ sở dữ liệu mà tôi đang truy vấn.
Có cách nào tốt hơn để thực hiện việc này không?
Duh. Đôi khi mọi thứ rất dễ dàng trong đường ray tôi nhớ rõ ràng. Cảm ơn! – unknownuser
Hãy sửa tôi nếu tôi lo lắng nhưng điều này dường như không hoạt động nếu phạm vi được đặt tên của bạn trông giống như sau: def self.with_full_name select ("users. *, CONCAT (first_name, last_name) AS full_name") kết thúc –