Class: Mongoid::Indexable::Specification

Inherits:
Object
  • Object
show all
Defined in:
build/mongoid-master/lib/mongoid/indexable/specification.rb

Overview

Encapsulates behavior around an index specification.

Since:

  • 4.0.0

Constant Summary collapse

MAPPINGS =

The mappings of nice Ruby-style names to the corresponding driver option name.

Since:

  • 4.0.0

{
  expire_after_seconds: :expire_after
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, key, opts = nil) ⇒ Specification

Instantiate a new index specification.

Examples:

Create the new specification.

Specification.new(Band, { name: 1 }, background: true)

Parameters:

  • klass (Class)

    The class the index is defined on.

  • key (Hash)

    The hash of name/direction pairs.

  • opts (Hash) (defaults to: nil)

    the index options.

Since:

  • 4.0.0



52
53
54
55
56
57
58
59
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 52

def initialize(klass, key, opts = nil)
  options = opts || {}
  Validators::Options.validate(klass, key, options)
  @klass = klass
  @key = normalize_key(key)
  @fields = @key.keys
  @options = normalize_options(options.dup)
end

Instance Attribute Details

#fieldsObject (readonly)

Since:

  • 4.0.0



26
27
28
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 26

def fields
  @fields
end

#keyHash

Returns The index key.

Returns:

  • (Hash)

    The index key.



26
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 26

attr_reader :klass, :key, :fields, :options

#klassClass

Returns The class the index is defined on.

Returns:

  • (Class)

    The class the index is defined on.



26
27
28
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 26

def klass
  @klass
end

#optionsObject

Since:

  • 4.0.0



26
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 26

attr_reader :klass, :key, :fields, :options

Instance Method Details

#==(other) ⇒ true, false

Is this index specification equal to another?

Examples:

Check equality of the specifications.

specification == other

Parameters:

Returns:

  • (true, false)

    If the specs are equal.

Since:

  • 4.0.0



38
39
40
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 38

def ==(other)
  fields == other.fields && key == other.key
end

#nameString

Get the index name, generated using the index key.

Examples:

Get the index name.

specification.name

Returns:

  • (String)

    name The index name.

Since:

  • 5.0.2



69
70
71
72
73
# File 'build/mongoid-master/lib/mongoid/indexable/specification.rb', line 69

def name
  @name ||= key.reduce([]) do |n, (k,v)|
    n << "#{k}_#{v}"
  end.join('_')
end