active_model_serializers/lib/active_model/array_serializer.rb

33 lines
884 B
Ruby

require 'active_model/default_serializer'
require 'active_model/serializable'
require 'active_model/serializer'
module ActiveModel
class ArraySerializer
include Serializable
class << self
attr_accessor :_root
alias root _root=
alias root= _root=
end
def initialize(object, options={})
@object = object
@options = options
@root = options[:root] || self.class._root
@meta_key = options[:meta_key] || :meta
@meta = options[@meta_key]
end
attr_accessor :object, :root, :meta_key, :meta
def serializable_array
@object.map do |item|
serializer = @options[:each_serializer] || Serializer.serializer_for(item) || DefaultSerializer
serializer.new(item).serializable_object(@options.merge(root: nil))
end
end
alias serializable_object serializable_array
end
end