module NoBrainer::Criteria::Scope

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/no_brainer/criteria/scope.rb, line 14
def method_missing(name, *args, &block)
  return super unless self.model.respond_to?(name)
  apply_named_scope(name, args, block)
end
respond_to?(name, include_private = false) click to toggle source
Calls superclass method
# File lib/no_brainer/criteria/scope.rb, line 10
def respond_to?(name, include_private = false)
  super || self.model.respond_to?(name)
end
unscoped() click to toggle source
# File lib/no_brainer/criteria/scope.rb, line 6
def unscoped
  chain(:use_default_scope => false)
end

Private Instance Methods

apply_default_scope() click to toggle source
# File lib/no_brainer/criteria/scope.rb, line 27
def apply_default_scope
  return self if @options[:use_default_scope] == false
  (model.default_scopes.map(&:call).compact + [self]).reduce(:merge)
end
apply_named_scope(name, args, block) click to toggle source
# File lib/no_brainer/criteria/scope.rb, line 21
def apply_named_scope(name, args, block)
  criteria = self.model.method(name).call(*args, &block)
  raise "#{name} did not return a criteria" unless criteria.is_a?(NoBrainer::Criteria)
  merge(criteria)
end