class ActiveModelSerializers::Adapter::Base

Attributes

instance_options[R]
serializer[R]

Public Class Methods

cache_key() click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 39
def self.cache_key
  @cache_key ||= ActiveModelSerializers::Adapter.registered_name(self)
end
default_key_transform() click to toggle source

Sets the default transform for the adapter.

@return [Symbol] the default transform for the adapter

# File lib/active_model_serializers/adapter/base.rb, line 16
def self.default_key_transform
  :unaltered
end
fragment_cache(cached_hash, non_cached_hash) click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 43
def self.fragment_cache(cached_hash, non_cached_hash)
  non_cached_hash.merge cached_hash
end
inherited(subclass) click to toggle source

Automatically register adapters when subclassing

# File lib/active_model_serializers/adapter/base.rb, line 9
def self.inherited(subclass)
  ActiveModelSerializers::Adapter.register(subclass)
end
new(serializer, options = {}) click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 49
def initialize(serializer, options = {})
  @serializer = serializer
  @instance_options = options
end
transform(options) click to toggle source

Determines the transform to use in order of precedence:

adapter option, global config, adapter default.

@param options [Object] @return [Symbol] the transform to use

# File lib/active_model_serializers/adapter/base.rb, line 25
def self.transform(options)
  return options[:key_transform] if options && options[:key_transform]
  ActiveModelSerializers.config.key_transform || default_key_transform
end
transform_key_casing!(value, options) click to toggle source

Transforms the casing of the supplied value.

@param value [Object] the value to be transformed @param options [Object] serializable resource options @return [Symbol] the default transform for the adapter

# File lib/active_model_serializers/adapter/base.rb, line 35
def self.transform_key_casing!(value, options)
  CaseTransform.send(transform(options), value)
end

Public Instance Methods

as_json(options = nil) click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 60
def as_json(options = nil)
  serializable_hash(options)
end
cache_key() click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 64
def cache_key
  self.class.cache_key
end
fragment_cache(cached_hash, non_cached_hash) click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 68
def fragment_cache(cached_hash, non_cached_hash)
  self.class.fragment_cache(cached_hash, non_cached_hash)
end
serializable_hash(_options = nil) click to toggle source

Subclasses that implement this method must first call

options = serialization_options(options)
# File lib/active_model_serializers/adapter/base.rb, line 56
def serializable_hash(_options = nil)
  fail NotImplementedError, 'This is an abstract method. Should be implemented at the concrete adapter.'
end

Private Instance Methods

root() click to toggle source
# File lib/active_model_serializers/adapter/base.rb, line 80
def root
  serializer.json_key.to_sym if serializer.json_key
end
serialization_options(options) click to toggle source

see github.com/rails-api/active_model_serializers/pull/965 When options is nil, sets it to +{}+

# File lib/active_model_serializers/adapter/base.rb, line 76
def serialization_options(options)
  options ||= {} # rubocop:disable Lint/UselessAssignment
end