class ActiveRecord::Migration::Compatibility::V4_2
def add_reference(table_name, ref_name, **options)
def add_reference(table_name, ref_name, **options) options[:index] ||= false super end
def add_timestamps(table_name, **options)
def add_timestamps(table_name, **options) options[:null] = true if options[:null].nil? super end
def compatible_table_definition(t)
def compatible_table_definition(t) class << t prepend TableDefinition end super end
def index_exists?(table_name, column_name, **options)
def index_exists?(table_name, column_name, **options) column_names = Array(column_name).map(&:to_s) options[:name] = if options[:name].present? options[:name].to_s else connection.index_name(table_name, column: column_names) end super end
def index_name_for_remove(table_name, column_name, options)
def index_name_for_remove(table_name, column_name, options) index_name = connection.index_name(table_name, column_name || options) unless connection.index_name_exists?(table_name, index_name) if options.key?(:name) options_without_column = options.except(:column) index_name_without_column = connection.index_name(table_name, options_without_column) if connection.index_name_exists?(table_name, index_name_without_column) return index_name_without_column end end raise ArgumentError, "Index name '#{index_name}' on table '#{table_name}' does not exist" end index_name end
def remove_index(table_name, column_name = nil, **options)
def remove_index(table_name, column_name = nil, **options) options[:name] = index_name_for_remove(table_name, column_name, options) super end