Module: ActiveModel::Serializable

Included in:
ArraySerializer, DefaultSerializer, Serializer
Defined in:
lib/active_model/serializable.rb,
lib/active_model/serializable/utils.rb

Defined Under Namespace

Modules: Utils

Constant Summary collapse

INSTRUMENTATION_KEY =
'!serialize.active_model_serializers'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



7
8
9
# File 'lib/active_model/serializable.rb', line 7

def self.included(base)
  base.extend Utils
end

Instance Method Details

#as_json(options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/active_model/serializable.rb', line 11

def as_json(options={})
  instrument do
    if root = options.fetch(:root, json_key)
      hash = { root => serializable_object(options) }
      hash.merge!(serializable_data)
      hash
    else
      serializable_object(options)
    end
  end
end

#embedded_in_root_associationsObject



43
44
45
# File 'lib/active_model/serializable.rb', line 43

def embedded_in_root_associations
  {}
end

#namespaceObject



35
36
37
38
39
40
41
# File 'lib/active_model/serializable.rb', line 35

def namespace
  if module_name = get_namespace
    Serializer.serializers_cache.fetch_or_store(module_name) do
      Utils._const_get(module_name)
    end
  end
end

#serializable_dataObject



27
28
29
30
31
32
33
# File 'lib/active_model/serializable.rb', line 27

def serializable_data
  embedded_in_root_associations.tap do |hash|
    if respond_to?(:meta) && meta
      hash[meta_key] = meta
    end
  end
end

#serializable_object_with_notification(options = {}) ⇒ Object



23
24
25
# File 'lib/active_model/serializable.rb', line 23

def serializable_object_with_notification(options={})
  instrument { serializable_object(options) }
end