Skip to content

Commit 2d24dde

Browse files
committed
serializable_hash and as_json should take options = nil
per ActiveModel::Serialization#serializable_hash https://github.com/rails/rails/blob/96bb004fc6e67cdf1b873f11ad5f8efd06949797/activemodel/lib/active_model/serialization.rb def serializable_hash(options = nil) options ||= {} Otherwise, passing in nil to `as_json` or `serializable_hash` makes things blow up when passing nil into attributes
1 parent f67fd97 commit 2d24dde

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

lib/active_model/serializer/adapter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ def initialize(serializer, options = {})
1616
@options = options
1717
end
1818

19-
def serializable_hash(options = {})
19+
def serializable_hash(options = nil)
2020
raise NotImplementedError, 'This is an abstract method. Should be implemented at the concrete adapter.'
2121
end
2222

23-
def as_json(options = {})
23+
def as_json(options = nil)
2424
hash = serializable_hash(options)
2525
include_meta(hash) unless self.class == FlattenJson
2626
hash

lib/active_model/serializer/adapter/json.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ module ActiveModel
44
class Serializer
55
class Adapter
66
class Json < Adapter
7-
def serializable_hash(options = {})
7+
def serializable_hash(options = nil)
8+
options ||= {}
89
if serializer.respond_to?(:each)
9-
@result = serializer.map{|s| FlattenJson.new(s).serializable_hash }
10+
@result = serializer.map{|s| FlattenJson.new(s).serializable_hash(options) }
1011
else
1112
@hash = {}
1213

lib/active_model/serializer/adapter/json_api.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ def initialize(serializer, options = {})
1515
end
1616
end
1717

18-
def serializable_hash(options = {})
18+
def serializable_hash(options = nil)
19+
options = {}
1920
if serializer.respond_to?(:each)
2021
serializer.each do |s|
21-
result = self.class.new(s, @options.merge(fieldset: @fieldset)).serializable_hash
22+
result = self.class.new(s, @options.merge(fieldset: @fieldset)).serializable_hash(options)
2223
@hash[:data] << result[:data]
2324

2425
if result[:included]
@@ -27,7 +28,7 @@ def serializable_hash(options = {})
2728
end
2829
end
2930
else
30-
@hash[:data] = attributes_for_serializer(serializer, @options)
31+
@hash[:data] = attributes_for_serializer(serializer, options)
3132
add_resource_relationships(@hash[:data], serializer)
3233
end
3334
@hash

lib/active_model/serializer/adapter/null.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module ActiveModel
22
class Serializer
33
class Adapter
44
class Null < Adapter
5-
def serializable_hash(options = {})
5+
def serializable_hash(options = nil)
66
{}
77
end
88
end

0 commit comments

Comments
 (0)