Class: ActiveModel::Serializer::Adapter

Inherits:
Object
  • Object
show all
Extended by:
ActiveSupport::Autoload
Defined in:
lib/active_model/serializer/adapter.rb,
lib/active_model/serializer/adapter/json.rb,
lib/active_model/serializer/adapter/null.rb,
lib/active_model/serializer/adapter/json_api.rb,
lib/active_model/serializer/adapter/flatten_json.rb,
lib/active_model/serializer/adapter/fragment_cache.rb,
lib/active_model/serializer/adapter/json/fragment_cache.rb,
lib/active_model/serializer/adapter/json_api/fragment_cache.rb,
lib/active_model/serializer/adapter/json_api/pagination_links.rb

Direct Known Subclasses

Json, JsonApi, Null

Defined Under Namespace

Classes: FlattenJson, FragmentCache, Json, JsonApi, Null

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(serializer, options = {}) ⇒ Adapter

Returns a new instance of Adapter.



24
25
26
27
# File 'lib/active_model/serializer/adapter.rb', line 24

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

Instance Attribute Details

#serializerObject (readonly)

Returns the value of attribute serializer.



22
23
24
# File 'lib/active_model/serializer/adapter.rb', line 22

def serializer
  @serializer
end

Class Method Details

.adapter_class(adapter) ⇒ Object



17
18
19
20
# File 'lib/active_model/serializer/adapter.rb', line 17

def self.adapter_class(adapter)
  adapter_name = adapter.to_s.classify.sub('API', 'Api')
  "ActiveModel::Serializer::Adapter::#{adapter_name}".safe_constantize
end

.create(resource, options = {}) ⇒ Object



11
12
13
14
15
# File 'lib/active_model/serializer/adapter.rb', line 11

def self.create(resource, options = {})
  override = options.delete(:adapter)
  klass = override ? adapter_class(override) : ActiveModel::Serializer.adapter
  klass.new(resource, options)
end

Instance Method Details

#as_json(options = nil) ⇒ Object



33
34
35
36
37
# File 'lib/active_model/serializer/adapter.rb', line 33

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

#fragment_cache(*args) ⇒ Object

Raises:

  • (NotImplementedError)


39
40
41
# File 'lib/active_model/serializer/adapter.rb', line 39

def fragment_cache(*args)
  raise NotImplementedError, 'This is an abstract method. Should be implemented at the concrete adapter.'
end

#serializable_hash(options = nil) ⇒ Object

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/active_model/serializer/adapter.rb', line 29

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