class JSONAPI::Deserializable::Relationship
Attributes
has_many_block[RW]
has_one_block[RW]
Public Class Methods
call(payload)
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 18 def self.call(payload) new(payload).to_h end
inherited(klass)
click to toggle source
Calls superclass method
# File lib/jsonapi/deserializable/relationship.rb, line 12 def self.inherited(klass) super klass.has_one_block = has_one_block klass.has_many_block = has_many_block end
new(payload)
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 22 def initialize(payload) @document = payload @data = payload['data'] deserialize! freeze end
Public Instance Methods
to_hash()
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 30 def to_hash @hash end
Also aliased as: to_h
Private Instance Methods
deserialize!()
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 37 def deserialize! @hash = if @data.is_a?(Array) deserialize_has_many elsif @data.nil? || @data.is_a?(Hash) deserialize_has_one end end
deserialize_has_many()
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 54 def deserialize_has_many block = self.class.has_many_block return {} unless block && @data.is_a?(Array) ids = @data.map { |ri| ri['id'] } types = @data.map { |ri| ri['type'] } block.call(@document, ids, types) end
deserialize_has_one()
click to toggle source
# File lib/jsonapi/deserializable/relationship.rb, line 46 def deserialize_has_one block = self.class.has_one_block return {} unless block id = @data && @data['id'] type = @data && @data['type'] block.call(@document, id, type) end