class Graphiti::Sideload::ManyToMany
Public Instance Methods
Source
# File lib/graphiti/sideload/many_to_many.rb, line 35 def apply_belongs_to_many_filter self_ref = self fk_type = parent_resource_class.attributes[:id][:type] fk_type = :hash if polymorphic? # Do not recreate if filter already exists unless resource_class.config[:filters].has_key?(inverse_filter.to_sym) resource_class.filter inverse_filter, fk_type do eq do |scope, value| self_ref.belongs_to_many_filter(scope, value) end end end end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 49 def assign_each(parent, children) children.select do |c| match = ->(ct) { ct.send(true_foreign_key) == parent.send(primary_key) } c.send(through).any?(&match) end end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 18 def base_filter(parents) {true_foreign_key => parent_filter(parents)} end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 22 def infer_foreign_key raise "You must explicitly pass :foreign_key for many-to-many relationships, or override in subclass to return a hash." end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 14 def inverse_filter @inverse_filter || true_foreign_key end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 26 def performant_assign? false end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 31 def polymorphic? false end
Override in subclass
Source
# File lib/graphiti/sideload/many_to_many.rb, line 6 def through foreign_key.keys.first end
Source
# File lib/graphiti/sideload/many_to_many.rb, line 10 def true_foreign_key foreign_key.values.first end