He visto muchas publicaciones al respecto, pero ninguna parece resolver mi problema. Tengo un default_scope
en un modelo de este modo:Rails 3.1.3 alcance sin ámbito
default_scope where(:is_active => true).order('LOWER(table.name)');
tengo otros ámbitos (normales), y quiero crear un ámbito inactive
usando unscoped
. Me gustaría definirlo como un ámbito, pero sólo funciona cuando se define como un método de clase:
# 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
¿Hay alguna manera de que me perdí, o tengo que utilizar un método de clase para definir este ámbito?
Algo similar a http://stackoverflow.com/questions/6919307/rails-3-decope-scope-scope-with-overrride –
(si lees los comentarios allí, no hay realmente una solución) –
Diría que también se debe buscar 'except' y' only', pero no parecen negar el 'default_scope' dentro de otro ámbito, similar al problema con' unscoped' y 'with_exclusive_scope'. –