Sha256: 513c31c26012a50cde4daa3ccc8b4d1f9a7d7e58de0c53173d19753d2bee3454

Contents?: true

Size: 760 Bytes

Versions: 4

Compression:

Stored size: 760 Bytes

Contents

# encoding: UTF-8
module MongoMapper
  module Plugins
    module Scopes
      extend ActiveSupport::Concern

      included do
        class_attribute :_scopes
      end

      module ClassMethods
        def scope(name, scope_options={})
          # Assign to _scopes instead of using []= to avoid mixing subclass scopes
          self._scopes = scopes.merge(name => lambda do |*args|
            result = scope_options.is_a?(Proc) ? scope_options.call(*args) : scope_options
            result = self.query(result) if result.is_a?(Hash)
            self.query.merge(result)
          end)
          singleton_class.send :define_method, name, &scopes[name]
        end

        def scopes
          self._scopes ||= {}
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mongo_mapper-0.13.1 lib/mongo_mapper/plugins/scopes.rb
mongo_mapper-0.13.0 lib/mongo_mapper/plugins/scopes.rb
mongo_mapper-0.13.0.beta2 lib/mongo_mapper/plugins/scopes.rb
mongo_mapper-0.13.0.beta1 lib/mongo_mapper/plugins/scopes.rb