Sha256: 46e71d596529d4d111d44c1963db89c0ec98a63cbda299fe633c60a4611c2c71
Contents?: true
Size: 923 Bytes
Versions: 41
Compression:
Stored size: 923 Bytes
Contents
# frozen_string_literal: true require_relative 'base' module DeclareSchema module SchemaChange class TableChange < Base def initialize(table_name, old_options, new_options) @table_name = table_name @old_options = old_options @new_options = new_options end def up_command alter_table(@table_name, @new_options) end def down_command alter_table(@table_name, @old_options) end private TABLE_OPTIONS_TO_SQL_MAPPINGS = { charset: 'CHARACTER SET', collation: 'COLLATE' }.freeze def alter_table(table_name, options) sql_options = options.map { |key, value| [TABLE_OPTIONS_TO_SQL_MAPPINGS[key], value] } statement = "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name)} #{sql_options.join(' ')}" "execute #{statement.inspect}" end end end end
Version data entries
41 entries across 41 versions & 1 rubygems