Class: Mongoid::Indexable::Specification
- Inherits:
-
Object
- Object
- Mongoid::Indexable::Specification
- Defined in:
- lib/mongoid/indexable/specification.rb
Overview
Encapsulates behaviour around an index specification.
Constant Summary collapse
- MAPPINGS =
The mappings of nice Ruby-style names to the corresponding driver option name.
{ expire_after_seconds: :expire_after }
Instance Attribute Summary collapse
- #fields ⇒ Object readonly
-
#key ⇒ Hash
The index key.
-
#klass ⇒ Class
The class the index is defined on.
- #options ⇒ Object
Instance Method Summary collapse
-
#==(other) ⇒ true, false
Is this index specification equal to another?.
-
#initialize(klass, key, opts = nil) ⇒ Specification
constructor
Instantiate a new index specification.
-
#name ⇒ String
Get the index name, generated using the index key.
Constructor Details
#initialize(klass, key, opts = nil) ⇒ Specification
Instantiate a new index specification.
50 51 52 53 54 55 56 57 |
# File 'lib/mongoid/indexable/specification.rb', line 50 def initialize(klass, key, opts = nil) = opts || {} Validators::Options.validate(klass, key, ) @klass = klass @key = normalize_key(key) @fields = @key.keys @options = (.dup) end |
Instance Attribute Details
#fields ⇒ Object (readonly)
24 25 26 |
# File 'lib/mongoid/indexable/specification.rb', line 24 def fields @fields end |
#key ⇒ Hash
Returns The index key.
24 |
# File 'lib/mongoid/indexable/specification.rb', line 24 attr_reader :klass, :key, :fields, :options |
#klass ⇒ Class
Returns The class the index is defined on.
24 25 26 |
# File 'lib/mongoid/indexable/specification.rb', line 24 def klass @klass end |
#options ⇒ Object
24 |
# File 'lib/mongoid/indexable/specification.rb', line 24 attr_reader :klass, :key, :fields, :options |
Instance Method Details
#==(other) ⇒ true, false
Is this index specification equal to another?
36 37 38 |
# File 'lib/mongoid/indexable/specification.rb', line 36 def ==(other) fields == other.fields && key == other.key end |
#name ⇒ String
Get the index name, generated using the index key.
67 68 69 70 71 |
# File 'lib/mongoid/indexable/specification.rb', line 67 def name @name ||= key.reduce([]) do |n, (k,v)| n << "#{k}_#{v}" end.join('_') end |