ManageIQ/manageiq

View on GitHub
app/models/dialog_field_association_validator.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class DialogFieldAssociationValidator
  class DialogFieldAssociationCircularReferenceError < RuntimeError; end

  def check_for_circular_references(hash, k, collection = [])
    raise DialogFieldAssociationCircularReferenceError, "#{k} already exists in #{collection}" if collection.include?(k)

    collection << k
    hash[k]&.each do |val|
      check_for_circular_references(hash, val, collection.dup)
    end
    nil
  end
end