Sha256: cbb76736175aedeec66645625874267b083904631ec44b1f6b35b60b499ab431

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

class ActiveModel::Serializer::Adapter::Json < ActiveModel::Serializer::Adapter
        extend ActiveSupport::Autoload
        autoload :FragmentCache

        def serializable_hash(options = nil)
          options ||= {}
          if serializer.respond_to?(:each)
            result = serializer.map { |s| FlattenJson.new(s).serializable_hash(options) }
          else
            hash = {}

            core = cache_check(serializer) do
              serializer.attributes(options)
            end

            serializer.associations.each do |association|
              serializer = association.serializer
              opts = association.options

              if serializer.respond_to?(:each)
                array_serializer = serializer
                hash[association.key] = array_serializer.map do |item|
                  cache_check(item) do
                    item.attributes(opts)
                  end
                end
              else
                hash[association.key] =
                  if serializer && serializer.object
                    cache_check(serializer) do
                      serializer.attributes(options)
                    end
                  elsif opts[:virtual_value]
                    opts[:virtual_value]
                  end
              end
            end
            result = core.merge hash
          end

          { root => result }
        end

        def fragment_cache(cached_hash, non_cached_hash)
          ActiveModel::Serializer::Adapter::Json::FragmentCache.new().fragment_cache(cached_hash, non_cached_hash)
        end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
active_model_serializers-0.10.0.rc3 lib/active_model/serializer/adapter/json.rb
cheap_ams-0.10.11 lib/active_model/serializer/adapter/json.rb
cheap_ams-0.10.10 lib/active_model/serializer/adapter/json.rb