Module: MongoDoc::NamedScope

Defined in:
lib/mongodoc/named_scope.rb

Defined Under Namespace

Classes: CriteriaProxy

Instance Method Summary collapse

Instance Method Details

#named_scope(name, options = {}, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/mongodoc/named_scope.rb', line 8

def named_scope(name, options = {}, &block)
  name = name.to_sym
  scopes[name] = lambda do |parent_scope, *args|
    CriteriaProxy.new(parent_scope, Hash === options ? options : options.call(*args), &block)
  end
  (class << self; self; end).class_eval <<-EOT
    def #{name}(*args)
      scopes[:#{name}].call(self, *args)
    end
  EOT
end

#scopesObject



4
5
6
# File 'lib/mongodoc/named_scope.rb', line 4

def scopes
  read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {})
end