Skip to content

Commit 7dca62e

Browse files
committed
Add ArraySerializer#object like Serializer
1 parent fc7b9c3 commit 7dca62e

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

lib/active_model/serializer/array_serializer.rb

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,30 @@ class Serializer
33
class ArraySerializer
44
NoSerializerError = Class.new(StandardError)
55
include Enumerable
6-
delegate :each, to: :@objects
6+
delegate :each, to: :@serializers
77

8-
attr_reader :root, :meta, :meta_key
8+
attr_reader :object, :root, :meta, :meta_key
99

10-
def initialize(objects, options = {})
10+
def initialize(resources, options = {})
1111
@root = options[:root]
12-
@resource = objects
13-
@objects = objects.map do |object|
14-
serializer_class = options.fetch(
15-
:serializer,
16-
ActiveModel::Serializer.serializer_for(object)
17-
)
12+
@object = resources
13+
@serializers = resources.map do |resource|
14+
serializer_class = options.fetch(:serializer) {
15+
ActiveModel::Serializer.serializer_for(resource)
16+
}
1817

1918
if serializer_class.nil?
20-
fail NoSerializerError, "No serializer found for object: #{object.inspect}"
19+
fail NoSerializerError, "No serializer found for resource: #{resource.inspect}"
2120
else
22-
serializer_class.new(object, options.except(:serializer))
21+
serializer_class.new(resource, options.except(:serializer))
2322
end
2423
end
2524
@meta = options[:meta]
2625
@meta_key = options[:meta_key]
2726
end
2827

2928
def json_key
30-
key = root || @objects.first.try(:json_key) || @resource.try(:name).try(:underscore)
29+
key = root || @serializers.first.try(:json_key) || object.try(:name).try(:underscore)
3130
key.try(:pluralize)
3231
end
3332
end

test/array_serializer_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def build_named_collection(*resource)
1515
resource
1616
end
1717

18+
def test_has_object_reader_serializer_interface
19+
assert_equal @serializer.object, @resource
20+
end
21+
1822
def test_respond_to_each
1923
assert_respond_to @serializer, :each
2024
end

0 commit comments

Comments
 (0)