From 7faa5e8e2e750d04df91a3abe32934f3cc2b4e4a Mon Sep 17 00:00:00 2001 From: Jiajia Wang Date: Wed, 15 Jul 2015 10:11:06 +1000 Subject: [PATCH 1/2] Bug fix for ArraySerializer json_key When the resource is a zero result query, i.e. post_comments = PostComment.where("1=0") the json_key will become 'postcomments' rather than 'post_comments'. Using 'underscore' instead of 'downcase' fixes the error. --- lib/active_model/serializer/array_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index fa66e290..a7e27a56 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -29,7 +29,7 @@ module ActiveModel if @objects.first @objects.first.json_key.pluralize else - @resource.name.downcase.pluralize if @resource.try(:name) + @resource.name.underscore.pluralize if @resource.try(:name) end end From 91ffec41af400dce736c75cadfc2cebf8fbc6b85 Mon Sep 17 00:00:00 2001 From: Jiajia Wang Date: Thu, 16 Jul 2015 11:11:14 +1000 Subject: [PATCH 2/2] Add test for ArraySerializer json_key method test json key when resource is empty --- test/array_serializer_test.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb index 259793f7..b7ee709c 100644 --- a/test/array_serializer_test.rb +++ b/test/array_serializer_test.rb @@ -38,6 +38,17 @@ module ActiveModel assert_equal @serializer.meta, "the meta" assert_equal @serializer.meta_key, "the meta key" end + + def test_json_key_when_resource_is_empty + Array.class_eval do + def name + 'PostComment' + end + end + @post_comments = [] + @serializer = ArraySerializer.new(@post_comments) + assert_equal @serializer.json_key, "post_comments" + end end end end