class Graphiti::Sideload::PolymorphicBelongsTo::Grouper
Attributes
field_name[R]
Public Class Methods
new(field_name, opts = {})
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 23 def initialize(field_name, opts = {}) @field_name = field_name @groups = [] @except = Array(opts[:except]).map(&:to_sym) @only = Array(opts[:only]).map(&:to_sym) end
Public Instance Methods
apply(sideload, resource_class)
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 49 def apply(sideload, resource_class) @groups.each do |group| if group.calls.empty? group.belongs_to(group.name.to_s.underscore.to_sym) end group.calls.each do |call| args = call[1] opts = args.extract_options! opts.merge! as: sideload.name, parent: sideload, group_name: group.name, polymorphic_child: true unless sideload.resource.class.abstract_class? opts[:foreign_key] ||= sideload.foreign_key opts[:primary_key] ||= sideload.primary_key end args << opts resource_class.send(call[0], *args, &call[2]) end end end
excluded?(group_sym)
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 34 def excluded?(group_sym) @except.include?(group_sym) end
expected?(group_sym)
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 30 def expected?(group_sym) @only.empty? || @only.include?(group_sym) end
ignore?(group_name)
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 38 def ignore?(group_name) group_sym = group_name.to_sym !expected?(group_sym) || excluded?(group_sym) end
on(name, &blk)
click to toggle source
# File lib/graphiti/sideload/polymorphic_belongs_to.rb, line 43 def on(name, &blk) group = Group.new(name.to_sym) @groups << group group end