Module: Carbonyte::Concerns::Serializable

Extended by:
ActiveSupport::Concern
Included in:
ApplicationController
Defined in:
app/controllers/carbonyte/concerns/serializable.rb

Overview

The Serializable concern helps with JSON:API serialization

Instance Method Summary collapse

Instance Method Details

#include_optionObject

Default include options for serializers



34
35
36
37
38
# File 'app/controllers/carbonyte/concerns/serializable.rb', line 34

def include_option
  return [] unless params[:include]

  params[:include].split(',').map(&:to_sym)
end

#serialize(object, serializer_class: nil, status: :ok) ⇒ Object

Helper method to render json responses

Examples:

Serializes ‘user` using UserSerializer and returns status 200 (OK)

user = User.find(123)
serialize(user)

Serializes ‘created_record` using the specified UserSerializer and returning status 201 (CREATED)

serialize(created_record, serializer: UserSerializer, status: :created)

Parameters:

  • object (Any)

    the object (or list) to be serialized

  • serializer_class (JSONAPI::Serializer) (defaults to: nil)

    serializer class to use. Inferred if not provided.

  • status (Symbol, Number) (defaults to: :ok)

    the status code to return, defaults to 200 (OK)



18
19
20
21
# File 'app/controllers/carbonyte/concerns/serializable.rb', line 18

def serialize(object, serializer_class: nil, status: :ok)
  serializer_class ||= serializer_for(object)
  render json: serializer_class.new(object, serializer_options).serializable_hash.to_json, status: status
end

#serializer_optionsObject

Default options for serializers



24
25
26
27
28
29
30
31
# File 'app/controllers/carbonyte/concerns/serializable.rb', line 24

def serializer_options
  {
    include: include_option,
    params: {
      current_user: current_user
    }
  }
end