diff options
author | Prem Sichanugrist <s@sikac.hu> | 2015-05-04 16:11:15 -0400 |
---|---|---|
committer | Prem Sichanugrist <s@sikac.hu> | 2015-06-26 16:25:13 -0400 |
commit | a4128725f5a2c6cbf3e963e2b78ba9382732728a (patch) | |
tree | 6702300b290791a2dfea1377bf8db6338db3c35b /activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb | |
parent | 0bee4100f10dec672b70ad63856149c85d8cbc95 (diff) | |
download | rails-a4128725f5a2c6cbf3e963e2b78ba9382732728a.tar.gz rails-a4128725f5a2c6cbf3e963e2b78ba9382732728a.tar.bz2 rails-a4128725f5a2c6cbf3e963e2b78ba9382732728a.zip |
Add reversible syntax for change_column_default
Passing `:from` and `:to` to `change_column_default` makes this command
reversible as user has defined its previous state.
So, instead of having the migration command as:
change_column_default(:posts, :state, "draft")
They can write it as:
change_column_default(:posts, :state, from: nil, to: "draft")
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb index 595c635fc0..d114cad16b 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb @@ -410,11 +410,12 @@ module ActiveRecord end # Changes the default value of a table column. - def change_column_default(table_name, column_name, default) # :nodoc: + def change_column_default(table_name, column_name, default_or_changes) # :nodoc: clear_cache! column = column_for(table_name, column_name) return unless column + default = extract_new_default_value(default_or_changes) alter_column_query = "ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} %s" if default.nil? # <tt>DEFAULT NULL</tt> results in the same behavior as <tt>DROP DEFAULT</tt>. However, PostgreSQL will |