mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Merge pull request #452 from plexus/has_one_each_serializer_fix
Using a HasOne association twice raises an exception (Undefined method `map')
This commit is contained in:
commit
80d9fb56d2
@ -53,7 +53,7 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
|
|
||||||
def build_serializer(object, options = {})
|
def build_serializer(object, options = {})
|
||||||
if object.respond_to?(:to_ary)
|
if object.respond_to?(:to_ary) && !(@serializer_class && @serializer_class <= ArraySerializer)
|
||||||
use_array_serializer!
|
use_array_serializer!
|
||||||
else
|
else
|
||||||
@serializer_class ||= Serializer.serializer_for(object) || DefaultSerializer
|
@serializer_class ||= Serializer.serializer_for(object) || DefaultSerializer
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
module ActiveModel
|
||||||
|
class Serializer
|
||||||
|
class Association
|
||||||
|
class BuildSerializerTest < ActiveModel::TestCase
|
||||||
|
def setup
|
||||||
|
@association = Association::HasOne.new('post', serializer: PostSerializer)
|
||||||
|
@post = Post.new({ title: 'Title 1', body: 'Body 1', date: '1/1/2000' })
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_build_serializer_for_array_called_twice
|
||||||
|
2.times do
|
||||||
|
serializer = @association.build_serializer([@post])
|
||||||
|
each_serializer = serializer.serializer_for(@post)
|
||||||
|
|
||||||
|
assert_instance_of(ArraySerializer, serializer)
|
||||||
|
assert_instance_of(PostSerializer, each_serializer)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue
Block a user