module MongoModel::DocumentExtensions::Scopes::ClassMethods
Public Instance Methods
current_scope()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 52 def current_scope current_scopes.last || unscoped end
default_scope(scope)
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 46 def default_scope(scope) reset_current_scopes previous_scope = default_scoping.last || unscoped default_scoping << previous_scope.merge(scope) end
default_scoping()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 64 def default_scoping @_default_scoping ||= [] end
default_scoping=(scoping)
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 68 def default_scoping=(scoping) @_default_scoping = scoping end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/mongomodel/document/scopes.rb, line 72 def inherited(subclass) super subclass.scopes = scopes.dup subclass.default_scoping = default_scoping.dup end
scope(name, scope)
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 26 def scope(name, scope) name = name.to_sym if !scopes[name] && respond_to?(name, true) logger.warn "Creating scope :#{name}. " \ "Overwriting existing method #{self.name}.#{name}." end scopes[name] = lambda do |*args| scope.is_a?(Proc) ? scope.call(*args) : scope end singleton_class.class_eval do define_method(name) do |*args| s = scopes[name].call(*args) scoped.merge(s) end end end
scoped()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 22 def scoped current_scope.clone end
scopes()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 56 def scopes @_scopes ||= {} end
scopes=(scopes)
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 60 def scopes=(scopes) @_scopes = scopes end
unscoped()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 18 def unscoped @unscoped ||= MongoModel::Scope.new(self) end
Protected Instance Methods
with_scope(scope) { || ... }
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 79 def with_scope(scope, &block) current_scopes << current_scope.merge(scope) begin yield ensure current_scopes.pop end end
Private Instance Methods
current_scopes()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 90 def current_scopes Thread.current[:"#{self}_scopes"] ||= default_scoping.dup end
reset_current_scopes()
click to toggle source
# File lib/mongomodel/document/scopes.rb, line 94 def reset_current_scopes Thread.current[:"#{self}_scopes"] = nil end