mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +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:
@@ -49,9 +49,8 @@ module ActiveModel
|
|||||||
serializer = options[:each_serializer]
|
serializer = options[:each_serializer]
|
||||||
elsif item.respond_to?(:active_model_serializer)
|
elsif item.respond_to?(:active_model_serializer)
|
||||||
serializer = item.active_model_serializer
|
serializer = item.active_model_serializer
|
||||||
else
|
|
||||||
serializer = DefaultSerializer
|
|
||||||
end
|
end
|
||||||
|
serializer ||= DefaultSerializer
|
||||||
|
|
||||||
serializable = serializer.new(item, options.merge(:root => nil))
|
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)
|
assert_equal({ :items => [ hash.as_json ]}, serializer.as_json)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_array_serializer_with_specified_seriailizer
|
def test_array_serializer_with_specified_serializer
|
||||||
post1 = Post.new(:title => "Post1", :author => "Author1", :id => 1)
|
post1 = Post.new(:title => "Post1", :author => "Author1", :id => 1)
|
||||||
post2 = Post.new(:title => "Post2", :author => "Author2", :id => 2)
|
post2 = Post.new(:title => "Post2", :author => "Author2", :id => 2)
|
||||||
|
|
||||||
@@ -65,4 +65,21 @@ class ArraySerializerTest < ActiveModel::TestCase
|
|||||||
{ :title => "Post2" }
|
{ :title => "Post2" }
|
||||||
], serializer.as_json)
|
], serializer.as_json)
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user