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, &block) ⇒ HasMany

Returns a new instance of HasMany.



37
38
39
40
# File 'lib/primalize/jsonapi.rb', line 37

def initialize attr, &block
  @attr = attr
  @block = block
end

Instance Attribute Details

#attrObject (readonly)

Returns the value of attribute attr.



36
37
38
# File 'lib/primalize/jsonapi.rb', line 36

def attr
  @attr
end

Instance Method Details

#call(model, cache:) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/primalize/jsonapi.rb', line 42

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



54
55
56
57
58
59
60
61
62
# File 'lib/primalize/jsonapi.rb', line 54

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

  { data: result }
end

#primalizerObject



50
51
52
# File 'lib/primalize/jsonapi.rb', line 50

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