class JSONAPIHelpers::Serializers::Model

Attributes

current_language[R]
current_user[R]
fields[R]
included[R]
key_transform[R]
meta[R]
model_scope[R]
request[R]
serializer[R]

Public Class Methods

new( model_scope, included: [], fields: {}, current_user: nil, current_language: nil, meta: {}, request: nil, key_transform: JSONAPIHelpers.config.key_transform ) click to toggle source

private

# File lib/jsonapi_helpers/serializers/model.rb, line 16
def initialize(
  model_scope,
  included: [],
  fields: {},
  current_user: nil,
  current_language: nil,
  meta: {},
  request: nil,
  key_transform: JSONAPIHelpers.config.key_transform
)
  @model_scope = model_scope
  @included = included
  @fields = fields
  @meta = meta
  @current_user = current_user
  @current_language = current_language
  @key_transform = key_transform
  # NOTE: ActiveModel::Serializer#serializer_for is from active_model_serializers
  @serializer = ActiveModel::Serializer.serializer_for(model_scope)
  @request = ActionDispatchRequestWrapper.new(request)
end
serialize(*args) click to toggle source
# File lib/jsonapi_helpers/serializers/model.rb, line 10
def self.serialize(*args)
  new(*args).serialize
end

Public Instance Methods

serialize() click to toggle source
# File lib/jsonapi_helpers/serializers/model.rb, line 54
def serialize
  # NOTE: ActiveModelSerializers::Adapter#create is from active_model_serializers
  ActiveModelSerializers::Adapter.create(
    serializer_instance,
    key_transform: key_transform,
    include: included,
    fields: fields,
    meta: meta,
    serialization_context: request
  )
end
serializer_instance() click to toggle source
# File lib/jsonapi_helpers/serializers/model.rb, line 38
def serializer_instance
  serializer_options = {
    scope: {
      current_user: current_user,
      current_language: current_language,
      current_language_id: current_language&.id
    }
  }

  if @model_scope.respond_to?(:to_ary)
    serializer_options[:each_serializer] = serializer
  end

  serializer.new(@model_scope, serializer_options)
end