Следующая проблема:
Мне нужно что-то вроде пустой области. Это означает, что эта область является 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