From 638614ffde52159c616d61c4e704df414645da0e Mon Sep 17 00:00:00 2001 From: Adman65 Date: Mon, 12 Dec 2011 14:33:18 +0100 Subject: [PATCH] Move polymorphic type into the serializable_hash --- lib/active_model/serializer.rb | 8 +++++--- test/serializer_test.rb | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index d52d1bee..16eb7d87 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -100,8 +100,12 @@ module ActiveModel return unless object if polymorphic? + polymorphic_type = object.class.to_s.split('::').last serializer_class = "#{object.class.to_s}Serializer".constantize - serializer_class.new(object, scope).serializable_hash + + serializer_class.new(object, scope).serializable_hash.merge({ + "#{name}_type".to_sym => polymorphic_type + }) else serializer.new(object, scope).serializable_hash end @@ -294,8 +298,6 @@ module ActiveModel hash[association.key] = association.serialize(associated_object, scope) if association.polymorphic? && associated_object - polymorphic_type = associated_object.class.to_s.split('::').last - hash["#{association.name}_type".to_sym] = polymorphic_type end end diff --git a/test/serializer_test.rb b/test/serializer_test.rb index acefbb5c..bb21d533 100644 --- a/test/serializer_test.rb +++ b/test/serializer_test.rb @@ -703,8 +703,8 @@ class SerializerTest < ActiveModel::TestCase serializer = polymorphic_serializer.new(blog, user) assert_equal({ - :writer_type => 'PolymorphicUser', :writer => { + :writer_type => 'PolymorphicUser', :first_name => "Jose", :last_name => "Valim" }