Method: MongoDoc::Scope#scope

Defined in:
lib/mongo_doc/scope.rb

#scope(name, *args, &block) ⇒ Object

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/mongo_doc/scope.rb', line 8

def scope(name, *args, &block)
  options = args.extract_options!
  raise ArgumentError if args.size != 1
  criteria = args.first
  name = name.to_sym
  scopes[name] = lambda do |parent_scope, *args|
    CriteriaProxy.new(parent_scope, Mongoid::Criteria === criteria ? criteria : criteria.call(*args), options, &block)
  end
  (class << self; self; end).class_eval "    def \#{name}(*args)\n      scopes[:\#{name}].call(self, *args)\n    end\n  EOT\nend\n"