mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-14 04:04:03 +00:00
fix migration
This commit is contained in:
parent
36778c24ca
commit
9ec10adea1
1 changed files with 27 additions and 35 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue