From 460d4c564af5e45661a30ed1a40e797e4bdda6f4 Mon Sep 17 00:00:00 2001 From: Loh Wei Jun Date: Sat, 6 May 2023 03:42:19 +0800 Subject: [PATCH] Allow serializer_for to accept String instead of just class objects --- lib/active_model/serializer.rb | 6 +++++- .../active_model/array_serializer/serialization_test.rb | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) 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