diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index 144bfe85..a1b92c4c 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -49,9 +49,8 @@ module ActiveModel serializer = options[:each_serializer] elsif item.respond_to?(:active_model_serializer) serializer = item.active_model_serializer - else - serializer = DefaultSerializer end + serializer ||= DefaultSerializer serializable = serializer.new(item, options.merge(:root => nil)) diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb index 11bec6c2..f3353829 100644 --- a/test/array_serializer_test.rb +++ b/test/array_serializer_test.rb @@ -52,7 +52,7 @@ class ArraySerializerTest < ActiveModel::TestCase assert_equal({ :items => [ hash.as_json ]}, serializer.as_json) end - def test_array_serializer_with_specified_seriailizer + def test_array_serializer_with_specified_serializer post1 = Post.new(:title => "Post1", :author => "Author1", :id => 1) post2 = Post.new(:title => "Post2", :author => "Author2", :id => 2) @@ -65,4 +65,21 @@ class ArraySerializerTest < ActiveModel::TestCase { :title => "Post2" } ], serializer.as_json) end + + def test_array_serializer_using_default_serializer + hash = { "value" => "something" } + class << hash + def active_model_serializer + nil + end + end + + array = [hash] + + serializer = array.active_model_serializer.new array + + assert_equal([ + { "value" => "something" } + ], serializer.as_json) + end end