ActiveRecord::Migration::CommandRecorder records commands done during a migration and knows how to reverse those commands. The CommandRecorder knows how to invert the following commands:
-
add_column
-
add_index
-
add_timestamp
-
create_table
-
remove_timestamps
-
rename_column
-
rename_index
-
rename_table
[RW] | commands | |
[RW] | delegate |
Source: show
# File activerecord/lib/active_record/migration/command_recorder.rb, line 18 def initialize(delegate = nil) @commands = [] @delegate = delegate end
Returns a list that represents commands that are the inverse of the
commands stored in commands
. For example:
recorder.record(:rename_table, [:old, :new]) recorder.inverse # => [:rename_table, [:new, :old]]
This method will raise an IrreversibleMigration exception if
it cannot invert the commands
.
Source: show
# File activerecord/lib/active_record/migration/command_recorder.rb, line 39 def inverse @commands.reverse.map { |name, args| method = :"invert_#{name}" raise IrreversibleMigration unless respond_to?(method, true) send(method, args) } end
record command
. command
should be a method name
and arguments. For example:
recorder.record(:method_name, [:arg1, arg2])
Source: show
# File activerecord/lib/active_record/migration/command_recorder.rb, line 27 def record(*command) @commands << command end