diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index f7906781..7fa1a31f 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -101,7 +101,7 @@ module ActiveModel if associated_data.respond_to?(:to_ary) associated_data.map { |elem| association.build_serializer(elem).serializable_hash } else - association.build_serializer(associated_data).serializable_hash + [association.build_serializer(associated_data).serializable_hash] end end diff --git a/lib/active_model/serializer/associations.rb b/lib/active_model/serializer/associations.rb index 5b6365e2..e78bce9c 100644 --- a/lib/active_model/serializer/associations.rb +++ b/lib/active_model/serializer/associations.rb @@ -49,7 +49,7 @@ module ActiveModel end def embedded_key - name + name.pluralize end end diff --git a/test/unit/active_model/serializer/has_one_test.rb b/test/unit/active_model/serializer/has_one_test.rb index bbec3967..b104d652 100644 --- a/test/unit/active_model/serializer/has_one_test.rb +++ b/test/unit/active_model/serializer/has_one_test.rb @@ -32,28 +32,28 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_serializable_hash @association.embed = :objects assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile' => { 'name' => 'N1', 'description' => 'D1' } + 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] }, @user_serializer.serializable_hash) end def test_associations_embedding_objects_serialization_using_as_json @association.embed = :objects assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile' => { 'name' => 'N1', 'description' => 'D1' } + 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] }, @user_serializer.as_json) end def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash @association.include = true assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profile' => { 'name' => 'N1', 'description' => 'D1' } + 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] }, @user_serializer.serializable_hash) end def test_associations_embedding_ids_including_objects_serialization_using_as_json @association.include = true assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profile' => { 'name' => 'N1', 'description' => 'D1' } + 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] }, @user_serializer.as_json) end @@ -69,7 +69,7 @@ module ActiveModel end assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profile' => { 'name' => 'fake' } + 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id, 'profiles' => [{ 'name' => 'fake' }] }, @user_serializer.as_json) ensure @association.serializer_class = @old_serializer