Method: Graphiti::Util::SerializerAttribute#apply

Defined in:
lib/graphiti/util/serializer_attributes.rb

#applyObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/graphiti/util/serializer_attributes.rb', line 12

def apply
  return unless readable?

  if @name == :id
    @serializer.id(&proc)
  elsif @attr[:proc]
    @serializer.send(_method, @name, serializer_options, &proc)
  elsif @serializer.attribute_blocks[@name].nil?
    @serializer.send(_method, @name, serializer_options, &proc)
  else
    unless @serializer.send(applied_method).include?(@name)
      inner = @serializer.attribute_blocks.delete(@name)
      wrapped = wrap_proc(inner)
      @serializer.send(_method, @name, serializer_options, &wrapped)
    end
  end

  existing = @serializer.send(applied_method)
  @serializer.send(:"#{applied_method}=", [@name] | existing)
end