mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 15:23:06 +00:00
fixing array rendering when elements doesn't have a serializer
This commit is contained in:
@@ -39,18 +39,20 @@ module ActionController
|
|||||||
options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }
|
options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }
|
||||||
|
|
||||||
if use_adapter? && (serializer = get_serializer(resource))
|
if use_adapter? && (serializer = get_serializer(resource))
|
||||||
|
|
||||||
@_serializer_opts[:scope] ||= serialization_scope
|
@_serializer_opts[:scope] ||= serialization_scope
|
||||||
@_serializer_opts[:scope_name] = _serialization_scope
|
@_serializer_opts[:scope_name] = _serialization_scope
|
||||||
|
|
||||||
# omg hax
|
|
||||||
object = serializer.new(resource, @_serializer_opts)
|
object = serializer.new(resource, @_serializer_opts)
|
||||||
adapter = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts)
|
|
||||||
super(adapter, options)
|
if serializer == ActiveModel::Serializer.config.array_serializer
|
||||||
|
resource = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts) unless object.objects.all? {|i| i.nil?}
|
||||||
else
|
else
|
||||||
super(resource, options)
|
resource = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
super(resource, options)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def rescue_with_handler(exception)
|
def rescue_with_handler(exception)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module ActiveModel
|
|||||||
include Enumerable
|
include Enumerable
|
||||||
delegate :each, to: :@objects
|
delegate :each, to: :@objects
|
||||||
|
|
||||||
attr_reader :meta, :meta_key
|
attr_reader :meta, :meta_key, :objects
|
||||||
|
|
||||||
def initialize(objects, options = {})
|
def initialize(objects, options = {})
|
||||||
@resource = objects
|
@resource = objects
|
||||||
@@ -13,8 +13,11 @@ module ActiveModel
|
|||||||
:serializer,
|
:serializer,
|
||||||
ActiveModel::Serializer.serializer_for(object)
|
ActiveModel::Serializer.serializer_for(object)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
unless serializer_class.nil?
|
||||||
serializer_class.new(object, options.except(:serializer))
|
serializer_class.new(object, options.except(:serializer))
|
||||||
end
|
end
|
||||||
|
end
|
||||||
@meta = options[:meta]
|
@meta = options[:meta]
|
||||||
@meta_key = options[:meta_key]
|
@meta_key = options[:meta_key]
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user