35 lines
853 B
Ruby
35 lines
853 B
Ruby
class AddOrganizationToVersions < ActiveRecord::Migration[5.2]
|
|
def up
|
|
add_reference :versions, :organization
|
|
deconflate
|
|
end
|
|
|
|
def down
|
|
conflate
|
|
remove_reference :versions, :organization
|
|
end
|
|
|
|
private
|
|
|
|
def conflate
|
|
say 'conflate'
|
|
|
|
PaperTrail::Version.where.not(organization_id: nil).each do |version|
|
|
version.update_attributes 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_attributes conference_id: nil, organization_id: id
|
|
end
|
|
end
|
|
end
|
|
end
|