File tree Expand file tree Collapse file tree 3 files changed +7
-13
lines changed Expand file tree Collapse file tree 3 files changed +7
-13
lines changed Original file line number Diff line number Diff line change @@ -43,10 +43,10 @@ def use_adapter?
4343 @_serializer_opts [ :scope_name ] = _serialization_scope
4444
4545 begin
46- object = serializer . new ( resource , @_serializer_opts )
47- rescue ActiveModel ::Serializer ::ArraySerializer ::Error
46+ serialized = serializer . new ( resource , @_serializer_opts )
47+ rescue ActiveModel ::Serializer ::ArraySerializer ::NoSerializerError
4848 else
49- resource = ActiveModel ::Serializer ::Adapter . create ( object , @_adapter_opts )
49+ resource = ActiveModel ::Serializer ::Adapter . create ( serialized , @_adapter_opts )
5050 end
5151 end
5252
Original file line number Diff line number Diff line change @@ -211,13 +211,7 @@ def each_association(&block)
211211 association_value ,
212212 options . except ( :serializer ) . merge ( serializer_from_options ( association_options ) )
213213 )
214- rescue ActiveModel ::Serializer ::ArraySerializer ::Error
215- # 1. Failure to serialize an element in a collection, e.g. [ {hi: "Steve" } ] will fail
216- # with NoMethodError when the ArraySerializer finds no serializer for the hash { hi: "Steve" },
217- # and tries to call new on that nil.
218- # 2. Convert association_value to hash using implicit as_json
219- # 3. Set as virtual value (serializer is nil)
220- # 4. Consider warning when this happens
214+ rescue ActiveModel ::Serializer ::ArraySerializer ::NoSerializerError
221215 virtual_value = association_value
222216 virtual_value = virtual_value . as_json if virtual_value . respond_to? ( :as_json )
223217 association_options [ :association_options ] [ :virtual_value ] = virtual_value
Original file line number Diff line number Diff line change 11module ActiveModel
22 class Serializer
33 class ArraySerializer
4- Error = Class . new ( StandardError )
4+ NoSerializerError = Class . new ( StandardError )
55 include Enumerable
66 delegate :each , to : :@objects
77
8- attr_reader :meta , :meta_key , :objects
8+ attr_reader :meta , :meta_key
99
1010 def initialize ( objects , options = { } )
1111 @resource = objects
@@ -16,7 +16,7 @@ def initialize(objects, options = {})
1616 )
1717
1818 if serializer_class . nil?
19- fail Error , "No serializer found for object: #{ object . inspect } "
19+ fail NoSerializerError , "No serializer found for object: #{ object . inspect } "
2020 else
2121 serializer_class . new ( object , options . except ( :serializer ) )
2222 end
You can’t perform that action at this time.
0 commit comments