Следующая проблема:
Мне нужно что-то вроде пустого пространства. Это означает, что этот объем является emtpy, но отвечает на все методы, на которые обычно реагирует область.
В настоящее время я использую небольшой грязный хак. Я просто поставлю "1 = 0" в качестве условий. Я нахожу это очень уродливым, так как оно попадает в базу данных. Простое возвращение пустого массива не будет работать, так как результат должен отвечать на методы с областью.
Есть ли лучшее существующее решение для этого или мне нужно будет сам это сделать?
Возможно, какой-то примерный код может помочь объяснить, что мне нужно:
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