Skip to content

Commit a794a06

Browse files
author
groyoh
committed
Fixed #911
1 parent 46ae776 commit a794a06

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

lib/active_model/serializer/array_serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def initialize(objects, options = {})
1414
:serializer,
1515
ActiveModel::Serializer.serializer_for(object)
1616
)
17-
serializer_class.new(object, options)
17+
serializer_class.new(object, options.except(:serializer))
1818
end
1919
@meta = options[:meta]
2020
@meta_key = options[:meta_key]

test/adapter/json/collection_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,20 @@ def setup
2222
ActionController::Base.cache_store.clear
2323
end
2424

25+
def test_with_serializer_option
26+
@blog.special_attribute = "Special"
27+
@blog.articles = [@first_post, @second_post]
28+
@serializer = ArraySerializer.new([@blog], serializer: CustomBlogSerializer)
29+
@adapter = ActiveModel::Serializer::Adapter::Json.new(@serializer)
30+
31+
expected = [{
32+
id: 1,
33+
special_attribute: "Special",
34+
articles: [{id: 1,title: "Hello!!", body: "Hello, world!!"}, {id: 2, title: "New Post", body: "Body"}]
35+
}]
36+
assert_equal expected, @adapter.serializable_hash
37+
end
38+
2539
def test_include_multiple_posts
2640
expected = [{
2741
title: "Hello!!",

test/array_serializer_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ def test_each_object_should_be_serialized_with_appropriate_serializer
2525
assert_equal serializers.last.custom_options[:some], :options
2626
end
2727

28+
def test_serializer_option_not_passed_to_each_serializer
29+
serializers = ArraySerializer.new([@post], {serializer: PostSerializer}).to_a
30+
31+
refute serializers.first.custom_options.key?(:serializer)
32+
end
33+
2834
def test_meta_and_meta_key_attr_readers
2935
meta_content = {meta: "the meta", meta_key: "the meta key"}
3036
@serializer = ArraySerializer.new([@comment, @post], meta_content)

test/fixtures/poro.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,13 @@ def json_key
178178
attribute :name, key: :title
179179
end
180180

181+
CustomBlogSerializer = Class.new(ActiveModel::Serializer) do
182+
attribute :id
183+
attribute :special_attribute
184+
185+
has_many :articles
186+
end
187+
181188
CommentPreviewSerializer = Class.new(ActiveModel::Serializer) do
182189
attributes :id
183190

0 commit comments

Comments
 (0)