class Graphiti::Sideload::HasMany
Public Class Methods
Source
# File lib/graphiti/sideload/has_many.rb, line 2 def initialize(name, opts) @inverse_filter = opts[:inverse_filter] super(name, opts) end
Calls superclass method
Graphiti::Sideload::new
Public Instance Methods
Source
# File lib/graphiti/sideload/has_many.rb, line 23 def base_filter(parents) {foreign_key => parent_filter(parents)} end
Source
# File lib/graphiti/sideload/has_many.rb, line 12 def inverse_filter @inverse_filter || foreign_key end
Source
# File lib/graphiti/sideload/has_many.rb, line 27 def link_filter(parents) {inverse_filter => parent_filter(parents)} end
Source
# File lib/graphiti/sideload/has_many.rb, line 16 def load_params(parents, query) query.hash.tap do |hash| hash[:filter] ||= {} hash[:filter].merge!(base_filter(parents)) end end
Private Instance Methods
Source
# File lib/graphiti/sideload/has_many.rb, line 37 def child_map(children) children.group_by(&foreign_key) end
Source
# File lib/graphiti/sideload/has_many.rb, line 41 def children_for(parent, map) pk = parent.send(primary_key) children = map[pk] return children if children keys = map.keys if pk.is_a?(String) && keys[0].is_a?(Integer) pk = pk.to_i elsif pk.is_a?(Integer) && keys[0].is_a?(String) pk = pk.to_s end map[pk] || [] end
Source
# File lib/graphiti/sideload/has_many.rb, line 33 def parent_filter(parents) ids_for_parents(parents).join(",") end