mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Better variables; allow looking serializer from class
This commit is contained in:
parent
87e929a255
commit
9c26ffe2d6
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user