Problema siguiente:
Necesito algo así como un ámbito vacío. Lo que significa que este ámbito es dinámico, pero responde a todos los métodos a los que suele responder un alcance. Actualmente estoy usando un poco de hack sucio. Simplemente proporciono "1 = 0" como condiciones. Encuentro esto realmente feo, ya que golpea la base de datos. Simplemente devolver una matriz vacía no funcionará, ya que el resultado debe responder a los métodos de ámbito.Ámbito vacío con Ruby on Rails
¿Existe una mejor solución existente para esto o tendré que programar esto yo mismo?
Tal vez un código de ejemplo podría ayudar a explicar lo que necesito:
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
¿Por qué la puntuación de un conjunto vacío alguna vez sería distinta de 0? ¿Qué estás tratando de lograr aquí? – jdl
Está buscando una colección vacía. – Swanand
@jdl: no sería algo distinto a 0. – Baju