From fecfe530ba082a374ebe9b1788dd67bc02ddd47e Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Wed, 20 Aug 2014 15:45:05 +0300 Subject: [PATCH] fix for buggy migration 20140801080705 --- ...ation20140801080705_add_users_to_events.rb | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb diff --git a/db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb b/db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb new file mode 100644 index 00000000..a225cb2a --- /dev/null +++ b/db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb @@ -0,0 +1,51 @@ +class UndoWrongMigration20140801080705AddUsersToEvents < ActiveRecord::Migration + class TempEvent < ActiveRecord::Base + self.table_name = 'events' + end + + class TempUser < ActiveRecord::Base + self.table_name = 'users' + end + + class TempEventUser < ActiveRecord::Base + self.table_name = 'event_users' + belongs_to :temp_event + belongs_to :temp_user + attr_accessible :event_id, :user_id, :event_role + end + + class Version < ActiveRecord::Base + self.table_name = 'versions' + end + + def up + if ActiveRecord::Migrator.get_all_versions.include?20140801080705 + user_deleted = TempUser.find_by(email: 'deleted@localhost.osem') + + TempEvent.all.each do |event| + whodunnit = Version.find_by(item_type: 'Event', item_id: event.id, event: 'create').whodunnit + original_user = TempUser.find_by(id: whodunnit) + + if original_user.blank? + original_submitter = user_deleted + else + original_submitter = original_user + end + + # Substitute submitter record + submitter = TempEventUser.find_by(event_id: event.id, event_role: 'submitter') + submitter.user_id = original_submitter.id + submitter.save! + + # Substitute speaker record + speaker = TempEventUser.find_by(event_id: event.id, event_role: 'speaker') + speaker.user_id = original_submitter.id + speaker.save! + end + end + end + + def down + raise ActiveRecord::IrreversibleMigration.new('Cannot reverse migration.') + end +end