Method: Graphiti::Sideload::PolymorphicBelongsTo#resolve

Defined in:
lib/graphiti/sideload/polymorphic_belongs_to.rb

#resolve(parents, query, graph_parent) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/graphiti/sideload/polymorphic_belongs_to.rb', line 111

def resolve(parents, query, graph_parent)
  parents.group_by(&grouper.field_name).each_pair do |group_name, group|
    next if group_name.nil? || grouper.ignore?(group_name)

    match = ->(c) { c.group_name == group_name.to_sym }
    if (sideload = children.values.find(&match))
      duped = remove_invalid_sideloads(sideload.resource, query)
      sideload.resolve(group, duped, graph_parent)
    else
      err = ::Graphiti::Errors::PolymorphicSideloadChildNotFound
      raise err.new(self, group_name)
    end
  end
end