osem-fcy/db/migrate/20200331214534_add_organization_to_versions.rb
Andrew Kvalheim 3f6a9e91bd Deconflate organization/conference IDs in role versions
Resolves failing test spec/features/versions_spec.rb:321

Partially reverts 81853d1ef9
2023-05-20 15:54:53 -07:00

37 lines
929 B
Ruby

class AddOrganizationToVersions < ActiveRecord::Migration[5.2]
def up
add_reference :versions, :organization
deconflate
PaperTrail::Version.reset_column_information
end
def down
conflate
remove_reference :versions, :organization
PaperTrail::Version.reset_column_information
end
private
def conflate
say 'conflate'
PaperTrail::Version.where.not(organization_id: nil).each do |version|
version.update conference_id: version.organization_id
end
end
def deconflate
say 'deconflate'
PaperTrail::Version.where.not(conference_id: nil).where(item_type: %(Role UsersRole)).each do |version|
id = version.conference_id
if Organization.exists?(id)
raise "version #{version.id} conflates organization #{id} with conference #{id}" if Conference.exists?(id)
version.update conference_id: nil, organization_id: id
end
end
end
end