module JsonapiSerializer::Common

Public Class Methods

new(opts = {}) click to toggle source
# File lib/jsonapi_serializer/common.rb, line 8
def initialize(opts = {})
  @type = self.class.meta_type || guess_type
end

Public Instance Methods

serializable_hash(payload, opts = {}) click to toggle source
# File lib/jsonapi_serializer/common.rb, line 16
def serializable_hash(payload, opts = {})
  hash = {}
  context = {tracker: {}, included: []}

  if payload.respond_to?(:map)
    hash[:data] = payload.map { |p| record_hash(p, context) }
  else
    hash[:data] = record_hash(payload, context)
  end

  hash[:meta] = opts[:meta] if opts.has_key? :meta
  hash[:included] = context[:included] if context[:included].present?
  hash
end
serialized_json(payload, opts = {}) click to toggle source
# File lib/jsonapi_serializer/common.rb, line 31
def serialized_json(payload, opts = {})
  MultiJson.dump(serializable_hash payload, opts)
end
type() click to toggle source
# File lib/jsonapi_serializer/common.rb, line 12
def type
  @type
end

Private Instance Methods

guess_type() click to toggle source
# File lib/jsonapi_serializer/common.rb, line 36
def guess_type
  if self.class.name.end_with?('Serializer')
    JsonapiSerializer.type_transform(self.class.name.chomp('Serializer'))
  else
    raise "Serializer class must end with `Serializer` in order to be able to guess type"
  end
end