method
find_unique_index_for
v7.1.3.4 -
Show latest stable
- Class:
ActiveRecord::InsertAll
find_unique_index_for(unique_by)private
No documentation available.
# File activerecord/lib/active_record/insert_all.rb, line 145
def find_unique_index_for(unique_by)
if !connection.supports_insert_conflict_target?
return if unique_by.nil?
raise ArgumentError, "#{connection.class} does not support :unique_by"
end
name_or_columns = unique_by || model.primary_key
match = Array(name_or_columns).map(&:to_s)
sorted_match = match.sort
if index = unique_indexes.find { |i| match.include?(i.name) || Array(i.columns).sort == sorted_match }
index
elsif match == primary_keys
unique_by.nil? ? nil : ActiveRecord::ConnectionAdapters::IndexDefinition.new(model.table_name, "#{model.table_name}_primary_key", true, match)
else
raise ArgumentError, "No unique index found for #{name_or_columns}"
end
end