mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Merge pull request #2073 from bf4/better_variables_in_serializer_lookup
Better variables; allow looking serializer from class
This commit is contained in:
commit
a461389f4c
@ -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
|
||||||
|
|
||||||
@ -91,6 +92,8 @@ module ActiveModel
|
|||||||
serializer_class
|
serializer_class
|
||||||
elsif klass.superclass
|
elsif klass.superclass
|
||||||
get_serializer_for(klass.superclass)
|
get_serializer_for(klass.superclass)
|
||||||
|
else
|
||||||
|
nil # No serializer found
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user