instance method
copy_table_indexes
Ruby on Rails 8.0.4
Since v5.2.8.1 PrivateSignature
copy_table_indexes(from, to, rename = {})
No documentation comment.
Parameters
-
fromreq -
toreq -
renameopt = {}
Source
# File activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb, line 651
def copy_table_indexes(from, to, rename = {})
indexes(from).each do |index|
name = index.name
if to == "a#{from}"
name = "t#{name}"
elsif from == "a#{to}"
name = name[1..-1]
end
columns = index.columns
if columns.is_a?(Array)
to_column_names = columns(to).map(&:name)
columns = columns.map { |c| rename[c] || c }.select do |column|
to_column_names.include?(column)
end
end
unless columns.empty?
# index name can't be the same
options = { name: name.gsub(/(^|_)(#{from})_/, "\\1#{to}_"), internal: true }
options[:unique] = true if index.unique
options[:where] = index.where if index.where
options[:order] = index.orders if index.orders
add_index(to, columns, **options)
end
end
end
Defined in activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb line 651
· View on GitHub
· Improve this page
· Find usages on GitHub