Class: Primalize::JSONAPI::HasMany

Inherits:
Object
  • Object
show all
Defined in:
lib/primalize/jsonapi.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attr, type: attr, &block) ⇒ HasMany

Returns a new instance of HasMany.



62
63
64
65
# File 'lib/primalize/jsonapi.rb', line 62

def initialize attr, type: attr, &block
  @attr = attr
  @block = block || proc { JSONAPI.fetch(type) }
end

Instance Attribute Details

#attrObject (readonly)

Returns the value of attribute attr.



61
62
63
# File 'lib/primalize/jsonapi.rb', line 61

def attr
  @attr
end

Instance Method Details

#call(model, cache:) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/primalize/jsonapi.rb', line 67

def call(model, cache:)
  model.send(@attr).map do |obj|
    cache.fetch(:serialization, obj) do
      primalizer.new(obj).call
    end
  end
end

#metadata(model, cache:) ⇒ Object



79
80
81
82
83
84
85
86
87
# File 'lib/primalize/jsonapi.rb', line 79

def (model, cache:)
  result = model.send(@attr).map do |obj|
    cache.fetch(:metadata, obj) do
      MetadataPrimalizer.new(obj, primalizer.type).call
    end
  end

  { data: result }
end

#primalizerObject



75
76
77
# File 'lib/primalize/jsonapi.rb', line 75

def primalizer
  @primalizer ||= @block.call
end