Following Problema:
Ho bisogno di qualcosa come un ambito vuoto. Questo significa che questo scope è emtpy, ma risponde a tutti i metodi a cui solitamente risponde un ambito. Attualmente sto usando un piccolo trucco sporco. Fornisco semplicemente "1 = 0" come condizioni. Lo trovo davvero brutto, dal momento che colpisce il database. La semplice restituzione di un array vuoto non funzionerà, poiché il risultato deve rispondere ai metodi dell'ambito.Scope vuoto con Ruby on Rails
Esiste una soluzione esistente migliore per questo o dovrò codificarlo da solo?
Forse qualche esempio di codice potrebbe contribuire a spiegare che cosa ho bisogno:
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
Perché il punteggio di un set vuoto deve mai essere diverso da 0? Cosa stai cercando di realizzare qui? – jdl
Stai cercando una collezione vuota. – Swanand
@jdl: non sarebbe diverso da 0. – Baju