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