diff --git a/CHANGELOG.md b/CHANGELOG.md index 10e7eb0b8..4edabb565 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Breaking changes: Fixes: +- [#1974](https://github.com/rails-api/active_model_serializers/pull/1974) Support namespace option in collections (@groyoh, @NullVoxPopuli) - [#1887](https://github.com/rails-api/active_model_serializers/pull/1887) Make the comment reflect what the function does (@johnnymo87) - [#1890](https://github.com/rails-api/active_model_serializers/issues/1890) Ensure generator inherits from ApplicationSerializer when available (@richmolj) - [#1922](https://github.com/rails-api/active_model_serializers/pull/1922) Make railtie an optional dependency in runtime (@ggpasqualino) diff --git a/lib/active_model/serializer/collection_serializer.rb b/lib/active_model/serializer/collection_serializer.rb index 9b9b61d53..852702784 100644 --- a/lib/active_model/serializer/collection_serializer.rb +++ b/lib/active_model/serializer/collection_serializer.rb @@ -71,7 +71,7 @@ def serializers_from_resources end def serializer_from_resource(resource, serializer_context_class, options) - serializer_class = options.fetch(:serializer) { serializer_context_class.serializer_for(resource) } + serializer_class = options.fetch(:serializer) { serializer_context_class.serializer_for(resource, options) } if serializer_class.nil? ActiveModelSerializers.logger.debug "No serializer found for resource: #{resource.inspect}" diff --git a/test/action_controller/namespace_lookup_test.rb b/test/action_controller/namespace_lookup_test.rb index dfab02c48..ec87a0448 100644 --- a/test/action_controller/namespace_lookup_test.rb +++ b/test/action_controller/namespace_lookup_test.rb @@ -37,6 +37,14 @@ def implicit_namespaced_serializer render json: book end + def implicit_namespaced_collection_serializer + writer = Writer.new(name: 'Bob') + book = Book.new(title: 'New Post', body: 'Body', writer: writer) + book2 = Book.new(title: 'New Post2', body: 'Body', writer: writer) + + render json: [book, book2] + end + def explicit_namespace_as_module book = Book.new(title: 'New Post', body: 'Body') @@ -90,6 +98,18 @@ def namespace_set_in_before_filter assert_equal expected, actual end + test 'implicitly uses namespaced serializer for collection' do + get :implicit_namespaced_collection_serializer + + expected = [ + { 'title' => 'New Post', 'body' => 'Body', 'writer' => { 'name' => 'Bob' } }, + { 'title' => 'New Post2', 'body' => 'Body', 'writer' => { 'name' => 'Bob' } } + ] + actual = JSON.parse(@response.body) + + assert_equal expected, actual + end + test 'explicit namespace as module' do get :explicit_namespace_as_module