Sha256: 16e3bc2253feb69764ba71ebce1da5fcc89241c29b4f45b353471eff0e72d967

Contents?: true

Size: 1 KB

Versions: 11

Compression:

Stored size: 1 KB

Contents

module MongoMapper
  module Plugins
    module DefaultScope
      
      module ClassMethods
        def default_scope options = nil, &block          
          options.should! :be_a, [NilClass, Hash]
          self.write_inheritable_attribute(:default_scope, (options || block))
        end
        
        def find_one options = {}
          super default_scope_options.merge(options)
        end

        def find_many options = {}
          super default_scope_options.merge(options)
        end
        
        def count options={}
          super default_scope_options.merge(options)
        end
        
        protected
          def default_scope_options
            default_scope = self.read_inheritable_attribute(:default_scope)
            if default_scope
              if default_scope.respond_to? :call
                default_scope.call self
              else
                default_scope
              end
            else
              {}
            end
          end
      end
      
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rails-ext-0.3.6 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3.5 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3.4 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3.3 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3.2 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3.1 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.3 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.2.21 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.2.20 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.2.19 lib/mongo_mapper_ext/plugins/default_scope.rb
rails-ext-0.2.18 lib/mongo_mapper_ext/plugins/default_scope.rb