method
visit_ChangeColumnDefinition
rails latest stable - Class:
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaCreation
visit_ChangeColumnDefinition(o)private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb, line 88
def visit_ChangeColumnDefinition(o)
column = o.column
column.sql_type = type_to_sql(column.type, **column.options)
quoted_column_name = quote_column_name(o.name)
change_column_sql = +"ALTER COLUMN #{quoted_column_name} TYPE #{column.sql_type}"
options = column_options(column)
if options[:collation]
change_column_sql << " COLLATE \"#{options[:collation]}\""
end
if options[:using]
change_column_sql << " USING #{options[:using]}"
elsif options[:cast_as]
cast_as_type = type_to_sql(options[:cast_as], **options)
change_column_sql << " USING CAST(#{quoted_column_name} AS #{cast_as_type})"
end
if options.key?(:default)
if options[:default].nil?
change_column_sql << ", ALTER COLUMN #{quoted_column_name} DROP DEFAULT"
else
quoted_default = quote_default_expression(options[:default], column)
change_column_sql << ", ALTER COLUMN #{quoted_column_name} SET DEFAULT #{quoted_default}"
end
end
if options.key?(:null)
change_column_sql << ", ALTER COLUMN #{quoted_column_name} #{options[:null] ? 'DROP' : 'SET'} NOT NULL"
end
change_column_sql
end