Sha256: 8fdf258af159210d2dcf9a011e68384f10cd5bcd5376198a830986f1ae372e1d

Contents?: true

Size: 1.79 KB

Versions: 21

Compression:

Stored size: 1.79 KB

Contents

require 'mongoid/extensions/hash/criteria_helpers'
require 'mongoid/extensions/symbol/inflections'
require 'mongo_doc/matchers'
require 'mongo_doc/contexts'
require 'mongoid/criteria'

module MongoDoc
  module Criteria
    # Create a criteria for this +Document+ class
    #
    # <tt>Person.criteria</tt>
    def criteria
      CriteriaWrapper.new(self)
    end

    delegate \
      :aggregate,
      :all,
      :and,
      :any_in,
      :blank?,
      :count,
      :empty?,
      :excludes,
      :extras,
      :first,
      :group,
      :id,
      :in,
      :last,
      :limit,
      :max,
      :min,
      :not_in,
      :offset,
      :one,
      :only,
      :order_by,
      :page,
      :paginate,
      :per_page,
      :skip,
      :sum,
      :where, :to => :criteria

    class CriteriaWrapper < Mongoid::Criteria
      %w(all and any_in cache enslave excludes extras fuse id in limit not_in offset only order_by skip where).each do |method|
        class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
          def #{method}_with_wrapping(*args, &block)                # def and(*args, &block)
            new_criteria = CriteriaWrapper.new(klass)               #   new_criteria = CriteriaWrapper.new(klass)
            new_criteria.merge(self)                                #   new_criteria.merge(criteria)
            new_criteria.#{method}_without_wrapping(*args, &block)  #   new_criteria.and_without_wrapping(*args, &block)
          end                                                       # end

          alias_method_chain :#{method}, :wrapping
          protected :#{method}_without_wrapping
        RUBY
      end

      protected

      attr_accessor :criteria

    end
  end
end

Hash.send(:include, Mongoid::Extensions::Hash::CriteriaHelpers)
Symbol.send(:include, Mongoid::Extensions::Symbol::Inflections)

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
mongo_doc-0.6.34 lib/mongo_doc/criteria.rb
mongo_doc-0.6.33 lib/mongo_doc/criteria.rb
mongo_doc-0.6.32 lib/mongo_doc/criteria.rb
mongo_doc-0.6.31 lib/mongo_doc/criteria.rb
mongo_doc-0.6.30 lib/mongo_doc/criteria.rb
mongo_doc-0.6.29 lib/mongo_doc/criteria.rb
mongo_doc-0.6.28 lib/mongo_doc/criteria.rb
mongo_doc-0.6.27 lib/mongo_doc/criteria.rb
mongo_doc-0.6.26 lib/mongo_doc/criteria.rb
mongo_doc-0.6.25 lib/mongo_doc/criteria.rb
mongo_doc-0.6.23 lib/mongo_doc/criteria.rb
mongo_doc-0.6.22 lib/mongo_doc/criteria.rb
mongo_doc-0.6.21 lib/mongo_doc/criteria.rb
mongo_doc-0.6.20 lib/mongo_doc/criteria.rb
mongo_doc-0.6.19 lib/mongo_doc/criteria.rb
mongo_doc-0.6.18 lib/mongo_doc/criteria.rb
mongo_doc-0.6.17 lib/mongo_doc/criteria.rb
mongo_doc-0.6.16 lib/mongo_doc/criteria.rb
mongo_doc-0.6.15 lib/mongo_doc/criteria.rb
mongo_doc-0.6.14 lib/mongo_doc/criteria.rb