module ForAlterStatements
Public Class Methods
included(_)
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 5 def included(_) STDERR.puts 'Including for_alter statements' end
Public Instance Methods
add_column_for_alter(table_name, column_name, type, options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 78 def add_column_for_alter(table_name, column_name, type, options = {}) td = create_table_definition(table_name) cd = td.new_column_definition(column_name, type, options) schema_creation.accept(ActiveRecord::ConnectionAdapters::AddColumnDefinition.new(cd)) end
add_index_for_alter(table_name, column_name, options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 54 def add_index_for_alter(table_name, column_name, options = {}) index_name, index_type, index_columns, _, index_algorithm, index_using = add_index_options(table_name, column_name, options) index_algorithm[0, 0] = ', ' if index_algorithm.present? "ADD #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} (#{index_columns})#{index_algorithm}" end
add_timestamps_for_alter(table_name, options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 67 def add_timestamps_for_alter(table_name, options = {}) [ add_column_for_alter(table_name, :created_at, :datetime, options), add_column_for_alter(table_name, :updated_at, :datetime, options) ] end
change_column_for_alter(table_name, column_name, type, options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 24 def change_column_for_alter(table_name, column_name, type, options = {}) column = column_for(table_name, column_name) type ||= column.sql_type options = { default: column.default, null: column.null, comment: column.comment }.merge(options) td = create_table_definition(table_name) cd = td.new_column_definition(column.name, type, options) schema_creation.accept(ActiveRecord::ConnectionAdapters::ChangeColumnDefinition.new(cd, column.name)) end
remove_column_for_alter(_table_name, column_name, _type = nil, _options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 84 def remove_column_for_alter(_table_name, column_name, _type = nil, _options = {}) "DROP COLUMN #{quote_column_name(column_name)}" end
remove_columns_for_alter(table_name, *column_names)
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 88 def remove_columns_for_alter(table_name, *column_names) column_names.map { |column_name| remove_column_for_alter(table_name, column_name) } end
remove_index_for_alter(table_name, options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 62 def remove_index_for_alter(table_name, options = {}) index_name = index_name_for_remove(table_name, options) "DROP INDEX #{quote_column_name(index_name)}" end
remove_timestamps_for_alter(table_name, _options = {})
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 74 def remove_timestamps_for_alter(table_name, _options = {}) [remove_column_for_alter(table_name, :updated_at), remove_column_for_alter(table_name, :created_at)] end
rename_column_for_alter(table_name, column_name, new_column_name)
click to toggle source
# File lib/active_record/connection_adapters/for_alter.rb, line 39 def rename_column_for_alter(table_name, column_name, new_column_name) column = column_for(table_name, column_name) options = { default: column.default, null: column.null, auto_increment: column.auto_increment? } columns_sql = "SHOW COLUMNS FROM #{quote_table_name(table_name)} LIKE #{quote(column_name)}" current_type = exec_query(columns_sql, 'SCHEMA').first['Type'] td = create_table_definition(table_name) cd = td.new_column_definition(new_column_name, current_type, options) schema_creation.accept(ActiveRecord::ConnectionAdapters::ChangeColumnDefinition.new(cd, column.name)) end