Ho visto molti post su questo, ma nessuno sembra risolvere il mio problema. Ho un default_scope
su un modello in questo modo:Rails 3.1.3 scope senza ambito
default_scope where(:is_active => true).order('LOWER(table.name)');
Ho altri (normali) gli ambiti, e voglio creare un ambito inactive
utilizzando unscoped
. Vorrei definirlo come un ambito, ma funziona solo se definita come metodo di classe:
# works
def self.inactive
unscoped { where(:is_active => false) }
end
# none of these work
scope :inactive, unscoped { where(:is_active => false) }
scope :inactive, with_exclusive_scope { where(:is_active => true) }
scope :inactive, unscoped.where(:is_active => false)
scope :inactive, lambda { unscoped { where(:is_active => false) } }
scope :inactive, unscoped { lambda { where(:is_active => false) } }
unscoped do
scope :inactive, where(:is_active => false)
end
C'è un modo che ho perso, o devo usare un metodo di classe per definire questo ambito?
Tipo di simile a http://stackoverflow.com/questions/6919307/rails-3-default-scope-scope-with-overrride –
(se leggi i commenti lì, non c'è davvero una soluzione) –
Direi anche guardare in 'except' e' only' ma non sembrano negare 'default_scope' da un altro scope, simile al problema con' unscoped' e 'with_exclusive_scope'. –