Better variables; allow looking serializer from class

This commit is contained in:
Benjamin Fleischer 2017-02-27 22:27:36 -06:00
parent 87e929a255
commit 9c26ffe2d6

View File

@ -34,17 +34,18 @@ module ActiveModel
# @param resource [ActiveRecord::Base, ActiveModelSerializers::Model] # @param resource [ActiveRecord::Base, ActiveModelSerializers::Model]
# @return [ActiveModel::Serializer] # @return [ActiveModel::Serializer]
# Preferentially returns # Preferentially returns
# 1. resource.serializer # 1. resource.serializer_class
# 2. ArraySerializer when resource is a collection # 2. ArraySerializer when resource is a collection
# 3. options[:serializer] # 3. options[:serializer]
# 4. lookup serializer when resource is a Class # 4. lookup serializer when resource is a Class
def self.serializer_for(resource, options = {}) def self.serializer_for(resource_or_class, options = {})
if resource.respond_to?(:serializer_class) if resource_or_class.respond_to?(:serializer_class)
resource.serializer_class resource_or_class.serializer_class
elsif resource.respond_to?(:to_ary) elsif resource_or_class.respond_to?(:to_ary)
config.collection_serializer config.collection_serializer
else 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
end end