From c278a2c5e109204ec8a47fcbfdfc327aad7996ce Mon Sep 17 00:00:00 2001 From: Vijay Dev Date: Sat, 25 Jun 2011 00:01:59 +0530 Subject: record unsupported methods in CommandRecorder instead of letting the unsupported methods go through to the underlying db causing errors like duplicate columns to occur when rolling back migrations --- activerecord/lib/active_record/migration/command_recorder.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/migration/command_recorder.rb b/activerecord/lib/active_record/migration/command_recorder.rb index f01e94169f..d06e050db3 100644 --- a/activerecord/lib/active_record/migration/command_recorder.rb +++ b/activerecord/lib/active_record/migration/command_recorder.rb @@ -93,11 +93,11 @@ module ActiveRecord [:remove_timestamps, args] end - # Forwards any missing method call to the \target. + # Record all the methods called in the +change+ method of a migration. + # This will ensure that IrreversibleMigration is raised when the corresponding + # invert_method does not exist while the migration is rolled back. def method_missing(method, *args, &block) - @delegate.send(method, *args, &block) - rescue NoMethodError => e - raise e, e.message.sub(/ for #<.*$/, " via proxy for #{@delegate}") + record(method, args) end end -- cgit v1.2.3