Class: ActiveModelSerializers::Adapter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/active_model_serializers/adapter/base.rb

Direct Known Subclasses

ActiveModel::Serializer::Adapter::Base, Attributes, Json, JsonApi, Null

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Base) initialize(serializer, options = {})

Returns a new instance of Base



13
14
15
16
# File 'lib/active_model_serializers/adapter/base.rb', line 13

def initialize(serializer, options = {})
  @serializer = serializer
  @instance_options = options
end

Instance Attribute Details

- (Object) instance_options (readonly)

Returns the value of attribute instance_options



11
12
13
# File 'lib/active_model_serializers/adapter/base.rb', line 11

def instance_options
  @instance_options
end

- (Object) serializer (readonly)

Returns the value of attribute serializer



11
12
13
# File 'lib/active_model_serializers/adapter/base.rb', line 11

def serializer
  @serializer
end

Class Method Details

+ (Symbol) default_key_transform

Sets the default transform for the adapter.

Returns:

  • (Symbol)

    the default transform for the adapter



65
66
67
# File 'lib/active_model_serializers/adapter/base.rb', line 65

def default_key_transform
  :unaltered
end

+ (Object) inherited(subclass)

Automatically register adapters when subclassing



7
8
9
# File 'lib/active_model_serializers/adapter/base.rb', line 7

def self.inherited(subclass)
  ActiveModelSerializers::Adapter.register(subclass)
end

+ (Symbol) transform(options)

Determines the transform to use in order of precedence:

adapter option, global config, adapter default.

Parameters:

  • options (Object)

Returns:

  • (Symbol)

    the transform to use



74
75
76
77
# File 'lib/active_model_serializers/adapter/base.rb', line 74

def transform(options)
  return options[:key_transform] if options && options[:key_transform]
  ActiveModelSerializers.config.key_transform || default_key_transform
end

+ (Symbol) transform_key_casing!(value, options)

Transforms the casing of the supplied value.

Parameters:

  • value (Object)

    the value to be transformed

  • options (Object)

    serializable resource options

Returns:

  • (Symbol)

    the default transform for the adapter



84
85
86
# File 'lib/active_model_serializers/adapter/base.rb', line 84

def transform_key_casing!(value, options)
  KeyTransform.send(transform(options), value)
end

Instance Method Details

- (Object) as_json(options = nil)



26
27
28
29
30
# File 'lib/active_model_serializers/adapter/base.rb', line 26

def as_json(options = nil)
  hash = serializable_hash(options)
  include_meta(hash)
  hash
end

- (Object) cache_check(serializer)



36
37
38
39
40
# File 'lib/active_model_serializers/adapter/base.rb', line 36

def cache_check(serializer)
  CachedSerializer.new(serializer).cache_check(self) do
    yield
  end
end

- (Object) cached_name



18
19
20
# File 'lib/active_model_serializers/adapter/base.rb', line 18

def cached_name
  @cached_name ||= self.class.name.demodulize.underscore
end

- (Object) fragment_cache(cached_hash, non_cached_hash)



32
33
34
# File 'lib/active_model_serializers/adapter/base.rb', line 32

def fragment_cache(cached_hash, non_cached_hash)
  non_cached_hash.merge cached_hash
end

- (Object) serializable_hash(_options = nil)



22
23
24
# File 'lib/active_model_serializers/adapter/base.rb', line 22

def serializable_hash(_options = nil)
  fail NotImplementedError, 'This is an abstract method. Should be implemented at the concrete adapter.'
end