2018-05-07 16:47:29 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2016-06-21 12:22:12 +05:30
|
|
|
namespace :data do
|
|
|
|
|
desc 'Sets conference_id in all pre-existing PaperTrail::Version objects'
|
|
|
|
|
task set_conference_in_versions: :environment do
|
2016-08-06 17:22:53 +05:30
|
|
|
ids_with_failure = []
|
2017-06-03 13:48:49 +03:00
|
|
|
PaperTrail::Version.where(conference_id: nil, item_type: %w[Conference Event]).each do |version|
|
2016-06-21 12:22:12 +05:30
|
|
|
# All pre-existing versions are either of Conference or Event
|
|
|
|
|
if version.item_type == 'Conference'
|
2022-02-14 17:53:58 +01:00
|
|
|
version.update_attribute(:conference_id, version.item_id)
|
2016-06-21 12:22:12 +05:30
|
|
|
|
|
|
|
|
elsif version.item_type == 'Event'
|
2019-03-05 23:28:57 +01:00
|
|
|
event = version.item
|
|
|
|
|
unless event || Event.find_by(id: version.item_id)
|
|
|
|
|
puts 'Not updating versions of deleted event...'
|
|
|
|
|
next
|
|
|
|
|
end
|
|
|
|
|
event ||= (version.reify || version.next.reify)
|
2016-08-06 17:22:53 +05:30
|
|
|
conference_id = if event.try(:program)
|
|
|
|
|
event.program.conference_id
|
|
|
|
|
# Event had attribute conference_id before it was replaced with program_id
|
|
|
|
|
elsif version.changeset[:conference_id]
|
|
|
|
|
version.changeset[:conference_id].second
|
|
|
|
|
elsif version.changeset[:program_id]
|
|
|
|
|
version.changeset[:program_id].second
|
|
|
|
|
elsif version.object && (object = YAML.safe_load(version.object))
|
|
|
|
|
object['conference_id']
|
|
|
|
|
else
|
|
|
|
|
ids_with_failure << version.id
|
|
|
|
|
puts "Setting conference_id value failed for PaperTrail::Version object with ID=#{version.id}"
|
|
|
|
|
nil
|
|
|
|
|
end
|
2022-02-14 17:53:58 +01:00
|
|
|
version.update_attribute(:conference_id, conference_id)
|
2016-06-21 12:22:12 +05:30
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
puts 'All done!'
|
2016-08-06 17:22:53 +05:30
|
|
|
puts "IDs with failures: #{ids_with_failure}" if ids_with_failure.any?
|
2016-06-21 12:22:12 +05:30
|
|
|
end
|
|
|
|
|
end
|