Module: MongoMapper::Plugins::Scopes::ClassMethods
- Defined in:
- lib/mongo_mapper/plugins/scopes.rb
Instance Method Summary collapse
- #active_scopes ⇒ Object
- #default_scope(*args, &block) ⇒ Object
- #default_scopes ⇒ Object
- #query(options = {}) ⇒ Object
- #scope(name, scope = {}) ⇒ Object
- #scopes ⇒ Object
- #unscoped ⇒ Object
- #with_scope(query = {}) ⇒ Object
Instance Method Details
#active_scopes ⇒ Object
25 26 27 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 25 def active_scopes @active_scopes ||= [] end |
#default_scope(*args, &block) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 49 def default_scope(*args, &block) if block_given? default_scopes << instance_exec(&block) end if args.any? default_scopes << args end default_scopes end |
#default_scopes ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 29 def default_scopes @default_scopes ||= begin superclass.respond_to?(:default_scopes) ? superclass.default_scopes.dup : [] end end |
#query(options = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 37 def query( = {}) res = super() all_anonymous_scopes.each do |scope| unscoped do res = process_scope(res, scope) end end res end |
#scope(name, scope = {}) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 12 def scope(name, scope={}) # Assign to _scopes instead of using []= to avoid mixing subclass scopes self._scopes = scopes.merge(name => scope) singleton_class.send :define_method, name do |*args| process_scope(self, scopes[name], *args) end end |
#scopes ⇒ Object
21 22 23 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 21 def scopes self._scopes ||= {} end |
#unscoped ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 68 def unscoped old_default_scopes = default_scopes.dup old_active_scopes = active_scopes.dup @default_scopes = [] @active_scopes = [] yield ensure @default_scopes = old_default_scopes @active_scopes = old_active_scopes end |
#with_scope(query = {}) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/mongo_mapper/plugins/scopes.rb', line 61 def with_scope(query = {}) active_scopes.push(query) yield ensure active_scopes.pop end |