123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::ConnectionAdapters::AlterTable

Do not use. This class is for internal use only.
Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(td) ⇒ AlterTable

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 716

def initialize(td)
  @td = td
  @operations = []
  @deferred_operations = []
end

Instance Attribute Details

#deferred_operations (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 714

attr_reader :operations, :deferred_operations

#empty? ⇒ Boolean (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 802

def empty?
  @operations.empty?
end

#operations (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 714

attr_reader :operations, :deferred_operations

Instance Method Details

#add_check_constraint(expression, **options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 783

def add_check_constraint(expression, **options)
  return unless @td.conn.supports_check_constraints?
  @operations << AddCheckConstraint.new(@td.new_check_constraint_definition(expression, options))
end

#add_column(column_name, type, **options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 724

def add_column(column_name, type, **options)
  column_name = column_name.to_s
  type = type.to_sym
  @operations << AddColumnDefinition.new(@td.new_column_definition(column_name, type, **options))
end

#add_foreign_key(to_table, **options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 765

def add_foreign_key(to_table, **options)
  conn = @td.conn
  return unless conn.use_foreign_keys?
  options = conn.foreign_key_options(name, to_table, options)
  @operations << AddForeignKey.new(@td.new_foreign_key_definition(to_table, options))
end

#add_timestamps(**options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 754

def add_timestamps(**options)
  options[:null] = false if options[:null].nil?
  add_column(:created_at, :datetime, **options)
  add_column(:updated_at, :datetime, **options)
end

#change_column_default(column_name, default_or_changes)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 738

def change_column_default(column_name, default_or_changes)
  conn = @td.conn
  column = conn.send(:column_for, name, column_name)
  return unless column
  default = conn.send(:extract_new_default_value, default_or_changes)
  @operations << ChangeColumnDefaultDefinition.new(column, default)
end

#change_column_null(name, null)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 750

def change_column_null(name, null)
  @operations << ChangeColumnNull.new(name, null)
end

#drop_check_constraint(constraint_name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 794

def drop_check_constraint(constraint_name)
  @operations << DropCheckConstraint.new(constraint_name)
end

#drop_constraint(constraint_name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 798

def drop_constraint(constraint_name)
  @operations << DropConstraint.new(constraint_name)
end

#drop_foreign_key(name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 779

def drop_foreign_key(name)
  @operations << DropForeignKey.new(name)
end

#name

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 722

def name; @td.name; end

#remove_check_constraint(expression = nil, **options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 788

def remove_check_constraint(expression = nil, **options)
  conn = @td.conn
  return unless conn.supports_check_constraints?
  drop_check_constraint(conn.send(:check_constraint_for!, name, expression: expression, **options).name)
end

#remove_column(column_name, _type = nil)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 730

def remove_column(column_name, _type = nil, **)
  @operations << DropColumn.new(column_name)
end

#remove_columns(*column_names)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 734

def remove_columns(*column_names, **)
  column_names.each { |column_name| remove_column(column_name) }
end

#remove_foreign_key(to_table = nil, **options)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 772

def remove_foreign_key(to_table = nil, **options)
  conn = @td.conn
  return unless conn.use_foreign_keys?
  to_table ||= options[:to_table]
  drop_foreign_key(conn.send(:foreign_key_for!, name, to_table: to_table, **options).name)
end

#remove_timestamps

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 760

def remove_timestamps(**)
  remove_column(:updated_at)
  remove_column(:created_at)
end

#rename_column(from_name, to_name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 746

def rename_column(from_name, to_name)
  @operations << RenameColumn.new(from_name, to_name)
end