method
change_column
v4.2.7 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements
change_column(table_name, column_name, type, options = {})public
Changes the column of a table.
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb, line 438
def change_column(table_name, column_name, type, options = {})
clear_cache!
quoted_table_name = quote_table_name(table_name)
sql_type = type_to_sql(type, options[:limit], options[:precision], options[:scale])
sql_type << "[]" if options[:array]
sql = "ALTER TABLE #{quoted_table_name} ALTER COLUMN #{quote_column_name(column_name)} TYPE #{sql_type}"
sql << " USING #{options[:using]}" if options[:using]
if options[:cast_as]
sql << " USING CAST(#{quote_column_name(column_name)} AS #{type_to_sql(options[:cast_as], options[:limit], options[:precision], options[:scale])})"
end
execute sql
change_column_default(table_name, column_name, options[:default]) if options_include_default?(options)
change_column_null(table_name, column_name, options[:null], options[:default]) if options.key?(:null)
end Related methods
- Instance methods
- add_column
- add_index
- change_column
- change_column_default
- change_column_null
- client_min_messages
- client_min_messages=
- collation
- columns
- columns_for_distinct
- create_database
- create_schema
- ctype
- current_database
- current_schema
- data_source_exists?
- data_sources
- default_sequence_name
- drop_database
- drop_schema
- drop_table
- encoding
- extract_foreign_key_action
- foreign_keys
- index_name_exists?
- index_name_length
- indexes
- new_column
- pk_and_sequence_for
- primary_key
- recreate_database
- remove_index!
- rename_column
- rename_index
- rename_table
- reset_pk_sequence!
- schema_exists?
- schema_names
- schema_search_path
- schema_search_path=
- serial_sequence
- set_pk_sequence!
- table_exists?
- tables
- type_to_sql