Method: Dynamoid::Indexes::ClassMethods#local_secondary_index
- Defined in:
- lib/dynamoid/indexes.rb
#local_secondary_index(options = {}) ⇒ Object
Defines a local secondary index on a table. Will use the same primary hash key as the table.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/dynamoid/indexes.rb', line 66 def local_secondary_index(={}) unless .present? raise Dynamoid::Errors::InvalidIndex.new('empty index definition') end primary_hash_key = self.hash_key primary_range_key = self.range_key index_range_key = [:range_key] unless index_range_key.present? raise Dynamoid::Errors::InvalidIndex.new('A local secondary index '\ 'requires a :range_key to be specified') end if primary_range_key.present? && index_range_key == primary_range_key raise Dynamoid::Errors::InvalidIndex.new('A local secondary index'\ ' must use a different :range_key than the primary key') end index_opts = .merge( dynamoid_class: self, type: :local_secondary, hash_key: primary_hash_key) index = Dynamoid::Indexes::Index.new(index_opts) key = index_key(primary_hash_key, index_range_key) self.local_secondary_indexes[key] = index self end |