From 9c26ffe2d6ba70981f2ffba4c6610ed0c75ac07d Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Mon, 27 Feb 2017 22:27:36 -0600 Subject: [PATCH] Better variables; allow looking serializer from class --- lib/active_model/serializer.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index 0d94bfb5..54a3724d 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -34,17 +34,18 @@ module ActiveModel # @param resource [ActiveRecord::Base, ActiveModelSerializers::Model] # @return [ActiveModel::Serializer] # Preferentially returns - # 1. resource.serializer + # 1. resource.serializer_class # 2. ArraySerializer when resource is a collection # 3. options[:serializer] # 4. lookup serializer when resource is a Class - def self.serializer_for(resource, options = {}) - if resource.respond_to?(:serializer_class) - resource.serializer_class - elsif resource.respond_to?(:to_ary) + def self.serializer_for(resource_or_class, options = {}) + if resource_or_class.respond_to?(:serializer_class) + resource_or_class.serializer_class + elsif resource_or_class.respond_to?(:to_ary) config.collection_serializer else - options.fetch(:serializer) { get_serializer_for(resource.class, options[:namespace]) } + resource_class = resource_or_class.class == Class ? resource_or_class : resource_or_class.class + options.fetch(:serializer) { get_serializer_for(resource_class, options[:namespace]) } end end