diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index dd82e976..e8f52e57 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -72,7 +72,10 @@ end alias root= _root= def root_name - name.demodulize.underscore.sub(/_serializer$/, '') if name + if name + root_name = name.demodulize.underscore.sub(/_serializer$/, '') + CONFIG.plural_default_root ? root_name.pluralize : root_name + end end def attributes(*attrs) diff --git a/test/unit/active_model/serializer/config_test.rb b/test/unit/active_model/serializer/config_test.rb index b297f998..bd9ae48a 100644 --- a/test/unit/active_model/serializer/config_test.rb +++ b/test/unit/active_model/serializer/config_test.rb @@ -78,6 +78,9 @@ module ActiveModel assert !association.embed_objects? assert association.embed_in_root assert_equal :lower_camel, association.key_format + assert_equal 'post', PostSerializer.root_name + CONFIG.plural_default_root = true + assert_equal 'posts', PostSerializer.root_name ensure PostSerializer._associations[:comments] = old_association CONFIG.clear