From dcd412132249367c971abd545398e8184e88223c Mon Sep 17 00:00:00 2001 From: Tony Pitale Date: Sun, 17 Feb 2013 16:44:27 -0500 Subject: [PATCH] reduce 2x map; fixes datamapper eager loading --- lib/active_model/array_serializer.rb | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index b55f7dd2..f0a2ab02 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -27,10 +27,12 @@ module ActiveModel serializer = item.active_model_serializer end - if serializer - serializer.new(item, @options) + serializable = serializer ? serializer.new(item, @options) : item + + if serializable.respond_to?(:serializable_hash) + serializable.serializable_hash else - item + serializable.as_json end end end @@ -47,20 +49,12 @@ module ActiveModel @options[:hash] = hash = {} @options[:unique_values] = {} - array = serializable_array.map do |item| - if item.respond_to?(:serializable_hash) - item.serializable_hash - else - item.as_json - end - end - if root = @options[:root] - hash.merge!(root => array) + hash.merge!(root => serializable_array) include_meta hash hash else - array + serializable_array end end end