Make change_table reversible when possible [#8267]
This commit is contained in:
parent
aedcd68368
commit
e43e8e268f
@ -70,7 +70,7 @@ def respond_to?(*args) # :nodoc:
|
||||
super || delegate.respond_to?(*args)
|
||||
end
|
||||
|
||||
[:create_table, :create_join_table, :change_table, :rename_table, :add_column, :remove_column,
|
||||
[:create_table, :create_join_table, :rename_table, :add_column, :remove_column,
|
||||
:rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps,
|
||||
:change_column, :change_column_default, :add_reference, :remove_reference, :transaction,
|
||||
:drop_join_table, :drop_table, :remove_columns, :remove_index,
|
||||
@ -84,6 +84,10 @@ def #{method}(*args, &block) # def create_table(*args, &block)
|
||||
alias :add_belongs_to :add_reference
|
||||
alias :remove_belongs_to :remove_reference
|
||||
|
||||
def change_table(table_name, options = {})
|
||||
yield ConnectionAdapters::Table.new(table_name, self)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
module StraightReversions
|
||||
|
@ -77,6 +77,26 @@ def test_revert_order
|
||||
[:drop_table, ["figs"], block]], @recorder.commands
|
||||
end
|
||||
|
||||
def test_invert_change_table
|
||||
@recorder.revert do
|
||||
@recorder.change_table :fruits do |t|
|
||||
t.string :name
|
||||
t.rename :kind, :cultivar
|
||||
end
|
||||
end
|
||||
assert_equal [
|
||||
[:rename_column, [:fruits, :cultivar, :kind]],
|
||||
[:remove_column, [:fruits, :name, :string, {}], nil],
|
||||
], @recorder.commands
|
||||
|
||||
assert_raises(ActiveRecord::IrreversibleMigration) do
|
||||
@recorder.revert do
|
||||
@recorder.change_table :fruits do |t|
|
||||
t.remove :kind
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_invert_create_table
|
||||
@recorder.revert do
|
||||
|
Loading…
Reference in New Issue
Block a user