method
alter_table
v6.0.0 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::SQLite3Adapter
alter_table(table_name, foreign_keys = foreign_keys(table_name), **options)private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb, line 365
def alter_table(table_name, foreign_keys = foreign_keys(table_name), **options)
altered_table_name = "a#{table_name}"
caller = lambda do |definition|
rename = options[:rename] || {}
foreign_keys.each do |fk|
if column = rename[fk.options[:column]]
fk.options[:column] = column
end
to_table = strip_table_name_prefix_and_suffix(fk.to_table)
definition.foreign_key(to_table, fk.options)
end
yield definition if block_given?
end
transaction do
disable_referential_integrity do
move_table(table_name, altered_table_name, options.merge(temporary: true))
move_table(altered_table_name, table_name, &caller)
end
end
end