Module: JSONAPI::Serialization::RelationshipsDeserialization

Included in:
Deserializer
Defined in:
lib/json_api/serialization/concerns/relationships_deserialization.rb

Instance Method Summary collapse

Instance Method Details

#extract_id_from_identifier(identifier) ⇒ Object



38
39
40
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 38

def extract_id_from_identifier(identifier)
  RelationshipHelpers.extract_id_from_identifier(identifier)
end

#extract_ids_from_data(data) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 30

def extract_ids_from_data(data)
  if data.is_a?(Array)
    data.map { |r| extract_id_from_identifier(r) }
  else
    [extract_id_from_identifier(data)]
  end
end

#extract_relationship_data(relationship) ⇒ Object



26
27
28
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 26

def extract_relationship_data(relationship)
  relationship[:data]
end

#find_relationship(relationship_name) ⇒ Object



22
23
24
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 22

def find_relationship(relationship_name)
  relationships[relationship_name.to_sym]
end

#relationship_id(relationship_name) ⇒ Object



42
43
44
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 42

def relationship_id(relationship_name)
  relationship_ids(relationship_name).first
end

#relationship_ids(relationship_name) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 12

def relationship_ids(relationship_name)
  relationship = find_relationship(relationship_name)
  return [] unless relationship

  data = extract_relationship_data(relationship)
  return [] unless data

  extract_ids_from_data(data)
end

#relationshipsObject



6
7
8
9
10
# File 'lib/json_api/serialization/concerns/relationships_deserialization.rb', line 6

def relationships
  rels = @params.dig(:data, :relationships) || @params[:relationships] || {}
  rels = rels.to_h if rels.respond_to?(:to_h)
  rels.is_a?(Hash) ? rels : {}
end