Newer
Older
dmpopidor / lib / data_cleanup / rules / answer / fix_blank_user.rb
@Bodacious Bodacious on 10 Aug 2018 995 bytes Update rule for answers with blank user
# frozen_string_literal: true
module DataCleanup
  module Rules
    # Fix blank user on Answer
    module Answer
      class FixBlankUser < Rules::Base

        def description
          "Fix blank user on Answer"
        end

        def call
          ::Answer.joins("LEFT OUTER JOIN users ON users.id = answers.user_id")
                  .where(users: { id: nil })
                  .includes(plan: { roles: :user }).each do |answer|

            if answer.plan.owner.present?
              log("Updating Answer##{answer.id} with user: #{answer.plan.owner}")
              answer.update(user: answer.plan.owner)
            elsif answer.plan.roles.any?
              user = answer.plan.roles.first.user
              log("Updating Answer##{answer.id} with user: #{user}")
              answer.update(user: user)
            else
              log("Destroying orphaned Answer##{answer.id}")
              answer.destroy
            end
          end

        end

      end
    end
  end
end