Sha256: 31334e08fe0c4be7f74581367132e3d5d63858bf0ebe7c04fd2f8b18a28c9557

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# encoding: utf-8
module Mongoid #:nodoc
  module Indexes #:nodoc
    extend ActiveSupport::Concern
    included do
      cattr_accessor :index_options
      self.index_options = {}
    end

    module ClassMethods #:nodoc

      # Send the actual index creation comments to the MongoDB driver
      def create_indexes
        return unless index_options
        current_collection = self._collection || set_collection
        index_options.each do |name, options|
          current_collection.create_index(name, options)
        end
      end

      # Add the default indexes to the root document if they do not already
      # exist. Currently this is only _type.
      def add_indexes
        if hereditary && !index_options[:_type]
          self.index_options[:_type] = {:unique => false, :background => true}
        end
        create_indexes if Mongoid.autocreate_indexes
      end

      # Adds an index on the field specified. Options can be :unique => true or
      # :unique => false. It will default to the latter.
      def index(name, options = { :unique => false })
        self.index_options[name] = options
        create_indexes if Mongoid.autocreate_indexes
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid-2.0.0.beta.15 lib/mongoid/indexes.rb
mongoid-2.0.0.beta.14 lib/mongoid/indexes.rb
mongoid-2.0.0.beta.13 lib/mongoid/indexes.rb