mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Always set a serializer for each item of an Array
model.active_model_serializer could return nil so we need to ensure that
if serializer is not setted we set DefaultSerializer to it.
This reverts commit 64ed05c484.
Fixes #318
This commit is contained in:
parent
8795f2bc1e
commit
c97acfd9ba
@ -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))
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user