diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index a89a79a8e..e5a56cd5a 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -122,7 +122,11 @@ def build_serializer_class(resource, options) "".tap do |klass_name| klass_name << "#{options[:namespace]}::" if options[:namespace] klass_name << options[:prefix].to_s.classify if options[:prefix] - klass_name << "#{resource.class.name}Serializer" + if resource.is_a?(String) + klass_name << "#{resource}Serializer" + else + klass_name << "#{resource.class.name}Serializer" + end end end diff --git a/test/unit/active_model/array_serializer/serialization_test.rb b/test/unit/active_model/array_serializer/serialization_test.rb index 890e7a09a..92df3d1e0 100644 --- a/test/unit/active_model/array_serializer/serialization_test.rb +++ b/test/unit/active_model/array_serializer/serialization_test.rb @@ -49,6 +49,7 @@ def test_serializer_for_array_returns_appropriate_type def object.serializer_class; CustomSerializer; end assert_equal CustomSerializer, Serializer.serializer_for(object) + assert_equal CustomSerializer, Serializer.serializer_for('Custom') end end