# frozen_string_literal: true
module DataCleanup
module Rules
# Fix duplicate question on Answer
module Answer
class FixDuplicateQuestion < Rules::Base
def description
"Fix duplicate question on Answer"
end
def call
# Take all answers that have duplicate question/plan combo...
dataset = ::Answer.group(:question_id, :plan_id)
.count.select { |k,v| v > 1 }
# Values looks like [{ [123, 199] => 2}, ...]
dataset.each do |values, count|
# ... and destroy all duplicates, keeping the latest record
::Answer.where(question: values.first, plan_id: values.last)
.order("created_at DESC")
.offset(1)
.destroy_all
end
end
end
end
end
end