From dbf512c14c021aeab234e36ef7d1b8137ca8ce89 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 16 Sep 2013 12:40:49 -0300 Subject: [PATCH] Make embed nil ids work --- lib/active_model/serializer.rb | 2 +- test/unit/active_model/serializer/has_one_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index d89bfb2f..2acbda1c 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -161,7 +161,7 @@ module ActiveModel if associated_data.respond_to?(:to_ary) associated_data.map { |elem| elem.send(association.embed_key) } else - associated_data.send(association.embed_key) + associated_data.send(association.embed_key) if associated_data 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 44b5ec2e..b9279aaf 100644 --- a/test/unit/active_model/serializer/has_one_test.rb +++ b/test/unit/active_model/serializer/has_one_test.rb @@ -54,6 +54,18 @@ module ActiveModel }, @user_serializer.as_json) end + def test_associations_embedding_nil_ids_serialization_using_as_json + @user.instance_eval do + def profile + nil + end + end + + assert_equal({ + 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => nil } + }, @user_serializer.as_json) + end + def test_associations_embedding_nil_objects_serialization_using_as_json @association.embed = :objects @user.instance_eval do