Sha256: 99358e90839dfb9bc6cba2bedba3552a3ca989246bf68714a72df500d93be2cd

Contents?: true

Size: 675 Bytes

Versions: 1

Compression:

Stored size: 675 Bytes

Contents

module Ohm
  module Scope
    def self.included(model)
      unless model.const_defined?(:DefinedScopes, false)
        model.const_set(:DefinedScopes, Module.new)
      end

      model.extend ClassMethods
    end

    module ClassMethods
      def scope(scope = nil, &block)
        self::DefinedScopes.module_eval(&block) if block_given?
        self::DefinedScopes.send(:include, scope) if scope
      end
    end

    module OverloadedSet
      def initialize(*args)
        super

        extend model::DefinedScopes if defined?(model::DefinedScopes)
      end
    end
  end

  Set.send :include, Scope::OverloadedSet
  MultiSet.send :include, Scope::OverloadedSet
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-contrib-1.0.0.rc2 lib/ohm/scope.rb