Method: ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#change_column_null

Defined in:
activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb

#change_column_null(table_name, column_name, null, default = nil) ⇒ Object

:nodoc:



453
454
455
456
457
458
459
460
461
462
# File 'activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb', line 453

def change_column_null(table_name, column_name, null, default = nil) # :nodoc:
  validate_change_column_null_argument!(null)

  clear_cache!
  unless null || default.nil?
    column = column_for(table_name, column_name)
    execute "UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote_default_expression(default, column)} WHERE #{quote_column_name(column_name)} IS NULL" if column
  end
  execute "ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} #{null ? 'DROP' : 'SET'} NOT NULL"
end