From 85ff8123fdcd9cbaa980f5e203195a784f9a5dc1 Mon Sep 17 00:00:00 2001 From: Tema Bolshakov Date: Thu, 28 Aug 2014 23:03:23 +0400 Subject: [PATCH] Include Enumerable to ArraySerializer --- lib/active_model/serializer/adapter/json_api_adapter.rb | 4 +--- lib/active_model/serializer/array_serializer.rb | 9 ++++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/active_model/serializer/adapter/json_api_adapter.rb b/lib/active_model/serializer/adapter/json_api_adapter.rb index 14094417..d82fdd7f 100644 --- a/lib/active_model/serializer/adapter/json_api_adapter.rb +++ b/lib/active_model/serializer/adapter/json_api_adapter.rb @@ -8,9 +8,7 @@ module ActiveModel associations = serializer.associations(only: [:id]).each_with_object({}) do |(attr, value), h| h[attr] = case value when ActiveModel::Serializer::ArraySerializer - value.attributes(options).map do |item| - item.id - end.to_a + value.map(&:id) when ActiveModel::Serializer # process belongs_to association else diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index c2751f4b..de4adfdc 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -1,12 +1,11 @@ module ActiveModel class Serializer class ArraySerializer < Serializer - def initialize(object) - @object = object - end + include Enumerable + delegate :each, to: :object - def attributes(options = {}) - object.map do |item| + def initialize(object) + @object = object.map do |item| serializer_class = ActiveModel::Serializer.serializer_for(item) serializer_class.new(item) end