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
-
COMBINABLE_COMMANDS =
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 635
Commands from CommandRecorder that can be dispatched directly to
AlterTablemethods (combinable into a single ALTER TABLE statement). Subclasses may extend.%i[ add_column remove_column remove_columns change_column_default add_timestamps remove_timestamps ].freeze
Class Method Summary
- .new(td) ⇒ AlterTable constructor
Instance Attribute Summary
- #deferred_operations readonly
- #empty? ⇒ Boolean readonly
- #operations readonly
Instance Method Summary
- #add_check_constraint(expression, options)
- #add_column(column_name, type, **options)
- #add_foreign_key(to_table, options)
- #add_timestamps(**options)
- #change_column_default(column_name, default_or_changes)
- #change_column_null(name, null)
- #drop_check_constraint(constraint_name)
- #drop_constraint(constraint_name)
- #drop_foreign_key(name)
- #name
- #remove_column(column_name, _type = nil)
- #remove_columns(*column_names)
- #remove_timestamps
- #rename_column(from_name, to_name)
Constructor Details
.new(td) ⇒ AlterTable
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 646
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 644
attr_reader :operations, :deferred_operations
#empty? ⇒ Boolean (readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 715
def empty? @operations.empty? end
#operations (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 644
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 703
def add_check_constraint(expression, ) @operations << AddCheckConstraint.new(@td.new_check_constraint_definition(expression, )) end
#add_column(column_name, type, **options)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 654
def add_column(column_name, type, **) column_name = column_name.to_s type = type.to_sym @operations << AddColumnDefinition.new(@td.new_column_definition(column_name, type, **)) end
#add_foreign_key(to_table, options)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 695
def add_foreign_key(to_table, ) @operations << AddForeignKey.new(@td.new_foreign_key_definition(to_table, )) end
#add_timestamps(**options)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 684
def (**) [:null] = false if [:null].nil? add_column(:created_at, :datetime, **) add_column(:updated_at, :datetime, **) end
#change_column_default(column_name, default_or_changes)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 668
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 680
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 707
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 711
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 699
def drop_foreign_key(name) @operations << DropForeignKey.new(name) end
#name
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 652
def name; @td.name; end
#remove_column(column_name, _type = nil)
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 660
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 664
def remove_columns(*column_names, **) column_names.each { |column_name| remove_column(column_name) } end
#remove_timestamps
[ GitHub ]# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb', line 690
def (**) 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 676
def rename_column(from_name, to_name) @operations << RenameColumn.new(from_name, to_name) end