Module: FastJsonapi::ObjectSerializer

Extended by:
ActiveSupport::Concern
Includes:
SerializationCore
Defined in:
lib/fast_jsonapi/object_serializer.rb

Constant Summary collapse

SERIALIZABLE_HASH_NOTIFICATION =
'render.fast_jsonapi.serializable_hash'
SERIALIZED_JSON_NOTIFICATION =
'render.fast_jsonapi.serialized_json'

Instance Method Summary collapse

Instance Method Details

#hash_for_collectionObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/fast_jsonapi/object_serializer.rb', line 46

def hash_for_collection
  serializable_hash = {}

  data = []
  included = []
  @resource.each do |record|
    data << self.class.record_hash(record, @params)
    included.concat self.class.get_included_records(record, @includes, @known_included_objects, @params) if @includes.present?
  end

  serializable_hash[:data] = data
  serializable_hash[:included] = included if @includes.present?
  serializable_hash[:meta] = @meta if @meta.present?
  serializable_hash[:links] = @links if @links.present?
  serializable_hash
end

#hash_for_one_recordObject



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fast_jsonapi/object_serializer.rb', line 34

def hash_for_one_record
  serializable_hash = { data: nil }
  serializable_hash[:meta] = @meta if @meta.present?
  serializable_hash[:links] = @links if @links.present?

  return serializable_hash unless @resource

  serializable_hash[:data] = self.class.record_hash(@resource, @params)
  serializable_hash[:included] = self.class.get_included_records(@resource, @includes, @known_included_objects, @params) if @includes.present?
  serializable_hash
end

#initialize(resource, options = {}) ⇒ Object



21
22
23
24
25
# File 'lib/fast_jsonapi/object_serializer.rb', line 21

def initialize(resource, options = {})
  process_options(options)

  @resource = resource
end

#serializable_hashObject Also known as: to_hash



27
28
29
30
31
# File 'lib/fast_jsonapi/object_serializer.rb', line 27

def serializable_hash
  return hash_for_collection if is_collection?(@resource)

  hash_for_one_record
end

#serialized_jsonObject



63
64
65
# File 'lib/fast_jsonapi/object_serializer.rb', line 63

def serialized_json
  self.class.to_json(serializable_hash)
end