From aa8e82e2c241573cb45ba598e16f10bd17bf3a4a Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Wed, 8 Aug 2018 23:03:43 -0700 Subject: [PATCH] The more specific option should win, allow combination --- lib/jsonapi-serializers/serializer.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/jsonapi-serializers/serializer.rb b/lib/jsonapi-serializers/serializer.rb index 303acde..7fb31ae 100644 --- a/lib/jsonapi-serializers/serializer.rb +++ b/lib/jsonapi-serializers/serializer.rb @@ -234,18 +234,20 @@ def evaluate_attr_or_block(attribute_name, attr_or_block) end def self.find_serializer_class_name(object, options) - if options[:namespace] - return "#{options[:namespace]}::#{object.class.name}Serializer" + if object.respond_to?(:jsonapi_serializer_class_name) && options.key?(:namespace) + return "#{options[:namespace]}::#{object.jsonapi_serializer_class_name}" end if object.respond_to?(:jsonapi_serializer_class_name) return object.jsonapi_serializer_class_name.to_s end + if options[:namespace] + return "#{options[:namespace]}::#{object.class.name}Serializer" + end "#{object.class.name}Serializer" end def self.find_serializer_class(object, options) - class_name = find_serializer_class_name(object, options) - class_name.constantize + find_serializer_class_name(object, options).constantize end def self.find_serializer(object, options)