Class: Primalize::JSONAPI::HasMany
- Inherits:
-
Object
- Object
- Primalize::JSONAPI::HasMany
- Defined in:
- lib/primalize/jsonapi.rb
Instance Attribute Summary collapse
-
#attr ⇒ Object
readonly
Returns the value of attribute attr.
Instance Method Summary collapse
- #call(model, cache:) ⇒ Object
-
#initialize(attr, &block) ⇒ HasMany
constructor
A new instance of HasMany.
- #metadata(model, cache:) ⇒ Object
- #primalizer ⇒ Object
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
#attr ⇒ Object (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 |
#primalizer ⇒ Object
50 51 52 |
# File 'lib/primalize/jsonapi.rb', line 50 def primalizer @primalizer ||= @block.call end |