Skip to content

Commit bcd3844

Browse files
committed
Stores passed in options in array serializers
This is supported in single serializers. This adds support for passing options from array serializers to each serializer in it.
1 parent 73aeba4 commit bcd3844

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

lib/active_model/serializer/array_serializer.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ class ArraySerializer
77
attr_reader :meta, :meta_key
88

99
def initialize(objects, options = {})
10+
options.merge!(root: nil)
11+
1012
@objects = objects.map do |object|
1113
serializer_class = options.fetch(
1214
:serializer,
1315
ActiveModel::Serializer.serializer_for(object)
1416
)
15-
serializer_class.new(object)
17+
serializer_class.new(object, options)
1618
end
1719
@meta = options[:meta]
1820
@meta_key = options[:meta_key]

test/array_serializer_test.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class ArraySerializerTest < Minitest::Test
66
def setup
77
@comment = Comment.new
88
@post = Post.new
9-
@serializer = ArraySerializer.new([@comment, @post])
9+
@serializer = ArraySerializer.new([@comment, @post], {some: :options})
1010
end
1111

1212
def test_respond_to_each
@@ -21,6 +21,8 @@ def test_each_object_should_be_serialized_with_appropriate_serializer
2121

2222
assert_kind_of PostSerializer, serializers.last
2323
assert_kind_of Post, serializers.last.object
24+
25+
assert_equal serializers.last.custom_options[:some], :options
2426
end
2527
end
2628
end

test/fixtures/poro.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ module Spam; end
7878
def blog
7979
Blog.new(id: 999, name: "Custom blog")
8080
end
81+
82+
def custom_options
83+
options
84+
end
8185
end
8286

8387
SpammyPostSerializer = Class.new(ActiveModel::Serializer) do

0 commit comments

Comments
 (0)