method
alter_table
v7.1.3.2 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::SQLite3Adapter
alter_table( table_name, foreign_keys = foreign_keys(table_name), check_constraints = check_constraints(table_name), **options )private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb, line 501
def alter_table(
table_name,
foreign_keys = foreign_keys(table_name),
check_constraints = check_constraints(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
check_constraints.each do |chk|
definition.check_constraint(chk.expression, **chk.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