class Primalize::JSONAPI::HasMany

Attributes

attr[R]

Public Class Methods

new(attr, type: attr, &block) click to toggle source
# File lib/primalize/jsonapi.rb, line 62
def initialize attr, type: attr, &block
  @attr = attr
  @block = block || proc { JSONAPI.fetch(type) }
end

Public Instance Methods

call(model, cache:) click to toggle source
# 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:) click to toggle source
# File lib/primalize/jsonapi.rb, line 79
def metadata(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
primalizer() click to toggle source
# File lib/primalize/jsonapi.rb, line 75
def primalizer
  @primalizer ||= @block.call
end