Sự cố sau:
Tôi cần một thứ gì đó giống như phạm vi trống. Điều này có nghĩa là phạm vi này là emtpy, nhưng đáp ứng tất cả các phương thức mà một phạm vi thường trả lời. Tôi hiện đang sử dụng một chút hack bẩn. Tôi chỉ đơn giản cung cấp "1 = 0" làm điều kiện. Tôi thấy điều này thực sự xấu xí, vì nó truy cập cơ sở dữ liệu. Chỉ cần trả về một mảng trống sẽ không hoạt động, vì kết quả phải trả lời cho các phương thức có phạm vi.Phạm vi trống với Ruby on Rails
Có giải pháp hiện tại nào tốt hơn cho điều này hay tôi sẽ cần tự viết mã này?
Có lẽ một số mã ví dụ có thể giúp giải thích những gì tôi cần:
class User < ActiveRecord::Base
named_scope :admins, :conditions => {:admin => true }
named_scope :none_dirty, :conditions => "1=0" # this scope is always empty
def none_broken
[]
end
def self.sum_score # okay, a bit simple, but a method like this should work!
total = 0
self.all.each do |user|
total += user.score
end
return total
end
end
User.admin.sum_score # the score i want to know
User.none_drity.sum_score # works, but hits the db
User.none_broken.sum_score # ...error, since it doesn't respond to sum_score
Tại sao điểm số của tập trống rỗng là bất kỳ điều gì khác hơn 0? Bạn đang cố gắng làm gì ở đây? – jdl
Bạn đang tìm kiếm một bộ sưu tập trống. – Swanand
@jdl: nó không phải là thứ gì khác ngoài 0. – Baju