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