提交 e43e8e26 编写于 作者: M Marc-Andre Lafortune

Make change_table reversible when possible [#8267]

上级 aedcd683
...@@ -70,7 +70,7 @@ def respond_to?(*args) # :nodoc: ...@@ -70,7 +70,7 @@ def respond_to?(*args) # :nodoc:
super || delegate.respond_to?(*args) super || delegate.respond_to?(*args)
end 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, :rename_index, :rename_column, :add_index, :remove_index, :add_timestamps, :remove_timestamps,
:change_column, :change_column_default, :add_reference, :remove_reference, :transaction, :change_column, :change_column_default, :add_reference, :remove_reference, :transaction,
:drop_join_table, :drop_table, :remove_columns, :remove_index, :drop_join_table, :drop_table, :remove_columns, :remove_index,
...@@ -84,6 +84,10 @@ def #{method}(*args, &block) # def create_table(*args, &block) ...@@ -84,6 +84,10 @@ def #{method}(*args, &block) # def create_table(*args, &block)
alias :add_belongs_to :add_reference alias :add_belongs_to :add_reference
alias :remove_belongs_to :remove_reference alias :remove_belongs_to :remove_reference
def change_table(table_name, options = {})
yield ConnectionAdapters::Table.new(table_name, self)
end
private private
module StraightReversions module StraightReversions
......
...@@ -77,6 +77,26 @@ def test_revert_order ...@@ -77,6 +77,26 @@ def test_revert_order
[:drop_table, ["figs"], block]], @recorder.commands [:drop_table, ["figs"], block]], @recorder.commands
end 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 def test_invert_create_table
@recorder.revert do @recorder.revert do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册