mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
parent
b502e3db95
commit
724509a9d5
3 changed files with 26 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
* Make `change_column_null` revertable. Fixes #13576.
|
||||||
|
|
||||||
|
*Yves Senn*, *Nishant Modak*, *Prathamesh Sonpatki*
|
||||||
|
|
||||||
* Don't create/drop the test database if RAILS_ENV is specified explicitely.
|
* Don't create/drop the test database if RAILS_ENV is specified explicitely.
|
||||||
|
|
||||||
Previously, when the environment was development, we would always
|
Previously, when the environment was development, we would always
|
||||||
|
|
|
@ -74,7 +74,7 @@ module ActiveRecord
|
||||||
:rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps,
|
:rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps,
|
||||||
:change_column_default, :add_reference, :remove_reference, :transaction,
|
:change_column_default, :add_reference, :remove_reference, :transaction,
|
||||||
:drop_join_table, :drop_table, :execute_block, :enable_extension,
|
:drop_join_table, :drop_table, :execute_block, :enable_extension,
|
||||||
:change_column, :execute, :remove_columns, # irreversible methods need to be here too
|
:change_column, :execute, :remove_columns, :change_column_null # irreversible methods need to be here too
|
||||||
].each do |method|
|
].each do |method|
|
||||||
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
||||||
def #{method}(*args, &block) # def create_table(*args, &block)
|
def #{method}(*args, &block) # def create_table(*args, &block)
|
||||||
|
@ -157,6 +157,11 @@ module ActiveRecord
|
||||||
alias :invert_add_belongs_to :invert_add_reference
|
alias :invert_add_belongs_to :invert_add_reference
|
||||||
alias :invert_remove_belongs_to :invert_remove_reference
|
alias :invert_remove_belongs_to :invert_remove_reference
|
||||||
|
|
||||||
|
def invert_change_column_null(args)
|
||||||
|
args[2] = !args[2]
|
||||||
|
[:change_column_null, args]
|
||||||
|
end
|
||||||
|
|
||||||
# Forwards any missing method call to the \target.
|
# Forwards any missing method call to the \target.
|
||||||
def method_missing(method, *args, &block)
|
def method_missing(method, *args, &block)
|
||||||
if @delegate.respond_to?(method)
|
if @delegate.respond_to?(method)
|
||||||
|
|
|
@ -308,6 +308,22 @@ module ActiveRecord
|
||||||
assert_equal 2000, connection.select_values("SELECT money FROM testings").first.to_i
|
assert_equal 2000, connection.select_values("SELECT money FROM testings").first.to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_change_column_null
|
||||||
|
testing_table_with_only_foo_attribute do
|
||||||
|
notnull_migration = Class.new(ActiveRecord::Migration) do
|
||||||
|
def change
|
||||||
|
change_column_null :testings, :foo, false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
notnull_migration.new.suppress_messages do
|
||||||
|
notnull_migration.migrate(:up)
|
||||||
|
assert_equal false, connection.columns(:testings).find{ |c| c.name == "foo"}.null
|
||||||
|
notnull_migration.migrate(:down)
|
||||||
|
assert connection.columns(:testings).find{ |c| c.name == "foo"}.null
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_column_exists
|
def test_column_exists
|
||||||
connection.create_table :testings do |t|
|
connection.create_table :testings do |t|
|
||||||
t.column :foo, :string
|
t.column :foo, :string
|
||||||
|
|
Loading…
Reference in a new issue