From 9ec10adea1ba4e143da9b1b08e49f90a94ba69be Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Wed, 30 Jul 2014 19:36:22 +0300 Subject: [PATCH] fix migration --- ...140717110124_delete_events_without_user.rb | 62 ++++++++----------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/db/migrate/20140717110124_delete_events_without_user.rb b/db/migrate/20140717110124_delete_events_without_user.rb index d21a7a47..82cf5611 100644 --- a/db/migrate/20140717110124_delete_events_without_user.rb +++ b/db/migrate/20140717110124_delete_events_without_user.rb @@ -1,45 +1,37 @@ class DeleteEventsWithoutUser < 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' + attr_accessible :event_id, :user_id, :event_role + end + def up - # User deletion without all the proper dependent: :destroy options might have left - # Events without a submitter (event_user association is deleted, but Event itslef is not) - Event.all.each do |event| - if event.submitter.blank? || event.speakers.first.blank? - if event.start_time.present? # If event is scheduled - - # Create dummy user - unless (user = User.find_by(email: 'deleted@localhost.com')) - user = User.new(email: 'deleted@localhost.com', name: 'User deleted', - biography: 'Data is no longer available for deleted user.', - password: Devise.friendly_token[0, 20]) - user.skip_confirmation! - user.save! - end - - # Event without submitter - unless event.event_users.where(event_role: 'submitter').present? - event.event_users.create!(user: user, event_role: 'submitter') - end - - # Event without speaker - unless event.event_users.where(event_role: 'speaker').present? - event.event_users.create!(user: user, event_role: 'speaker') - end - - event.event_users.each do |eu| - unless eu.user.present? - eu.user = user - eu.save! - end - end - - else - event.destroy + TempEvent.all.each do |event| + if TempEventUser.where(event_id: event).blank? + # Create dummy user + unless (user = User.find_by(email: 'deleted@localhost.osem')) + user = User.new(email: 'deleted@localhost.osem', name: 'User deleted', + biography: 'Data is no longer available for deleted user.', + password: Devise.friendly_token[0, 20]) + user.skip_confirmation! + user.save! end + + TempEventUser.create!(event_id: event.id, user_id: user.id, event_role: 'submitter') + TempEventUser.create!(event_id: event.id, user_id: user.id, event_role: 'speaker') end end end def down - raise ActiveRecord::IrreversibleMigration.new('Cannot reverse migration. Deleted events cannot be re-created') + raise ActiveRecord::IrreversibleMigration, 'Cannot reverse migration. Events deleted cannot be re-created' end end