# frozen_string_literal: true module DataCleanup module Rules # Fix duplicate number on Phase module Phase class FixDuplicateNumber < Rules::Base def description "Fix duplicate number on Phase" end def call data = ::Phase.group(:number, :template_id) .count .select { |k,v| v > 1 } data.each do |values, count| number, template_id = *values ids = ::Phase.where(template_id: template_id) .order("number ASC, created_at ASC") .pluck(:id) template = ::Template.find(template_id) ::Phase.update_numbers!(*ids, parent: template) end end end end end end