namespace :after_party do desc 'Deployment task: remove_duplicate_attestations' task remove_duplicate_attestations: :environment do dossier_ids = Attestation .group(:dossier_id) .count .filter { |_, attestation_count| attestation_count > 1 } .map(&:first) dossier_ids.each do |dossier_id| current_attestation, *old_attestations = Attestation.where(dossier_id: dossier_id).order(created_at: :desc) old_attestations.each do |old| if current_attestation.created_at < old.created_at raise "something odd, old attestation #{old.id} is newer than the current attestation #{current_attestation.id}" end old.destroy end end AfterParty::TaskRecord .create version: AfterParty::TaskRecorder.new(__FILE__).timestamp end end