class Primalize::JSONAPI::HasOne

Attributes

attr[R]

Public Class Methods

new(attr, type: attr, &block) click to toggle source
# File lib/primalize/jsonapi.rb, line 92
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 97
def call(model, cache:)
  model = model.send(@attr)
  cache.fetch(:serialization, model) do
    primalizer.new(model).call
  end
end
metadata(model, cache:) click to toggle source
# File lib/primalize/jsonapi.rb, line 108
def metadata(model, cache:)
  model = model.send(@attr)
  data = cache.fetch(:metadata, model) do
    MetadataPrimalizer.new(model, primalizer.type).call
  end

  { data: data }
end
primalizer() click to toggle source
# File lib/primalize/jsonapi.rb, line 104
def primalizer
  @primalizer ||= @block.call
end