module DatabaseValidations::UniquenessKeyExtractor
Public Instance Methods
attribute_by_columns_keys(validator)
click to toggle source
@param [DatabaseValidations::DbUniquenessValidator]
@return [Hash]
# File lib/database_validations/lib/uniqueness_key_extractor.rb, line 8 def attribute_by_columns_keys(validator) validator.attributes.map do |attribute| [KeyGenerator.for_db_uniqueness(attribute, Array.wrap(validator.options[:scope])), attribute] end.to_h end
attribute_by_indexes_keys(validator)
click to toggle source
@param [DatabaseValidations::DbUniquenessValidator]
@return [Hash]
# 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
attribute_by_key(validator)
click to toggle source
@param [DatabaseValidations::DbUniquenessValidator]
@return [Hash]
# File lib/database_validations/lib/uniqueness_key_extractor.rb, line 34 def attribute_by_key(validator) attribute_by_columns_keys(validator).merge(attribute_by_indexes_keys(validator)) end