class ActiveModel::ArraySerializer


ActiveModel::ArraySerializer.root = false
To disable serialization of root elements:
the active_model_serializer method.
Serializes an Array, checking if each element implements
Active Model Array Serializer

def _serializable_array

def _serializable_array
  @object.map do |item|
    if @options.has_key? :each_serializer
      serializer = @options[:each_serializer]
    elsif item.respond_to?(:active_model_serializer)
      serializer = item.active_model_serializer
    end
    serializable = serializer ? serializer.new(item, @options) : DefaultSerializer.new(item, @options.merge(:root => false))
    if serializable.respond_to?(:serializable_hash)
      serializable.serializable_hash
    else
      serializable.as_json
    end
  end
end

def as_json(*args)

def as_json(*args)
  @options[:hash] = hash = {}
  @options[:unique_values] = {}
  if root = @options[:root]
    hash.merge!(root => serializable_array)
    include_meta hash
    hash
  else
    serializable_array
  end
end

def cached(value = true)

set perform caching like root
def cached(value = true)
  self.perform_caching = value
end

def expand_cache_key(*args)

def expand_cache_key(*args)
  ActiveSupport::Cache.expand_cache_key(args)
end

def include_meta(hash)

def include_meta(hash)
  hash[meta_key] = @options[:meta] if @options.has_key?(:meta)
end

def initialize(object, options={})

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

def meta_key

def meta_key
  @options[:meta_key].try(:to_sym) || :meta
end

def perform_caching?

def perform_caching?
  perform_caching && cache && respond_to?(:cache_key)
end

def serializable_array

def serializable_array
  if perform_caching?
    cache.fetch expand_cache_key([self.class.to_s.underscore, cache_key, 'serializable-array']) do
      _serializable_array
    end
  else
    _serializable_array
  end
end

def to_json(*args)

def to_json(*args)
  if perform_caching?
    cache.fetch expand_cache_key([self.class.to_s.underscore, cache_key, 'to-json']) do
      super
    end
  else
    super
  end
end