Method: ActiveRecord::ConnectionAdapters::IBM_DB2_I5#change_column

Defined in:
lib/active_record/connection_adapters/ibm_db_adapter.rb

#change_column(table_name, column_name, type, options = {}) ⇒ Object



3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 3362

def change_column(table_name, column_name, type, options = {})
  data_type = @adapter.type_to_sql(type, options[:limit], options[:precision], options[:scale])
  sql = "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} SET DATA TYPE #{data_type}"
  execute_and_auto_confirm(sql)
  reorg_table(table_name)

  if options.include?(:default) and options.include?(:null)
    # which to run first?
    if options[:null] or options[:default].nil?
      change_column_null(table_name, column_name, type, options[:null])
      change_column_default(table_name, column_name, options[:default])
    else
      change_column_default(table_name, column_name, options[:default])
      change_column_null(table_name, column_name, type, options[:null])
    end
  elsif options.include?(:default)
    change_column_default(table_name, column_name, options[:default])
  elsif options.include?(:null)
    change_column_null(table_name, column_name, type, options[:null])
  end
end