Method: DatabaseValidations::UniquenessKeyExtractor.attribute_by_indexes_keys

Defined in:
lib/database_validations/lib/uniqueness_key_extractor.rb

.attribute_by_indexes_keys(validator) ⇒ Hash

Parameters:

Returns:

  • (Hash)


17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/database_validations/lib/uniqueness_key_extractor.rb', line 17

def attribute_by_indexes_keys(validator) # rubocop:disable Metrics/AbcSize
  adapter = Adapters::BaseAdapter.new(validator.klass)

  if validator.index_name
    [[KeyGenerator.for_unique_index(validator.index_name), validator.attributes[0]]].to_h
  else
    validator.attributes.map do |attribute|
      columns = KeyGenerator.unify_columns(attribute, validator.options[:scope])
      index = adapter.find_unique_index(columns, validator.where)
      [KeyGenerator.for_unique_index(index.name), attribute]
    end.to_h
  end
end