以下问题:
我需要类似于空作用域的东西。这意味着该作用域为空,但响应所有通常响应的作用域方法。 我目前使用一种有点不干净的技巧。我只需提供“1=0”作为条件。我觉得这真的很丑陋,因为它会访问数据库。仅返回一个空数组是行不通的,因为结果必须响应作用域方法。
是否存在更好的现有解决方案,还是我需要自己编写代码?
也许一些示例代码可以帮助解释我需要什么:
我需要类似于空作用域的东西。这意味着该作用域为空,但响应所有通常响应的作用域方法。 我目前使用一种有点不干净的技巧。我只需提供“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