2011-09-09 43 views
8

Tôi có phạm vi này:tại sao sử dụng tổng trong phạm vi kết quả phạm vi 3.1 dẫn đến lỗi?

scope :total_quantity, sum('quantity') 

Khi tôi chạy:

MyModel.total_quantity 

tôi nhận được lỗi này:

NoMethodError: undefined method `default_scoped?' for 4:Fixnum 

Chạy phương pháp tổng hợp trực tiếp làm việc

MyModel.sum('quantity') # 4 

Tôi không thể tìm thấy bất kỳ tài liệu nào trên default_scoped? hoặc tại sao nó được gọi ở đây. Bạn có biết nếu có cách nào để khắc phục vấn đề này không?

Trả lời

12

Chỉ cần thử phương pháp thay vì phạm vi. Nó hoạt động như quyến rũ tôi cũng phải đối mặt với một vấn đề tương tự, nhưng khi tôi thay đổi phạm vi của tôi để phương pháp hoạt động tốt của nó. Dưới đây là mã thử nghiệm và làm việc :)

def self.total_quantity 
sum('quantity') 
end 

Hãy cho tôi biết nếu nó hoạt động hay không! Cảm ơn

+11

Các phương thức tương thích về phạm vi trả về một đối tượng có phạm vi, không phải là số như trường hợp với 'tổng hợp'. Bạn cần phải sử dụng cách tiếp cận này với những thứ trả về giá trị cuối cùng mà không thể có phạm vi xa hơn. – tadman

+0

Tuyệt vời, nó đã hoạt động! Cảm ơn. –

+0

Tôi cũng đã có cùng một vấn đề mà tôi đã cố gắng để tìm số lượng đối tượng thông qua phạm vi. Bây giờ rõ ràng, cảm ơn tadman – Abhi

-1

này làm việc cho tôi

def self.total_quantity 
sum('quantity') 
end 

Nhưng tôi đã không nhận được lý do cho một lỗi nếu tôi sử dụng phạm vi thay vì phương pháp.

Các vấn đề liên quan