Class: JsonapiCompliable::Util::RelationshipPayload

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi_compliable/util/relationship_payload.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource, payload, only: [], except: []) ⇒ RelationshipPayload

Returns a new instance of RelationshipPayload.



13
14
15
16
17
18
# File 'lib/jsonapi_compliable/util/relationship_payload.rb', line 13

def initialize(resource, payload, only: [], except: [])
  @resource = resource
  @payload  = payload
  @only     = only
  @except   = except
end

Instance Attribute Details

#payload ⇒ Object (readonly)

Returns the value of attribute payload.



4
5
6
# File 'lib/jsonapi_compliable/util/relationship_payload.rb', line 4

def payload
  @payload
end

#resource ⇒ Object (readonly)

Returns the value of attribute resource.



4
5
6
# File 'lib/jsonapi_compliable/util/relationship_payload.rb', line 4

def resource
  @resource
end

Class Method Details

.iterate(resource:, relationships: {}, only: [], except: []) ⇒ Object



6
7
8
9
10
11
# File 'lib/jsonapi_compliable/util/relationship_payload.rb', line 6

def self.iterate(resource:, relationships: {}, only: [], except: [])
  instance = new(resource, relationships, only: only, except: except)
  instance.iterate do |sideload, relationship_data, sub_relationships|
    yield sideload, relationship_data, sub_relationships
  end
end

Instance Method Details

#iterate ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jsonapi_compliable/util/relationship_payload.rb', line 20

def iterate
  payload.each_pair do |relationship_name, relationship_payload|
    if sl = resource.sideload(relationship_name.to_sym)
      if should_yield?(sl.type)
        if relationship_payload.is_a?(Array)
          relationship_payload.each do |rp|
            yield payload_for(sl, rp)
          end
        else
          yield payload_for(sl, relationship_payload)
        end
      end
    end
  end
end