Skip to content

Commit 3e8290a

Browse files
committed
Serializer instance methods don't change; track at class level
Per groyoh #1356 (comment)
1 parent c4feccf commit 3e8290a

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

lib/active_model/serializer.rb

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ def self.get_serializer_for(klass)
184184
end
185185
end
186186

187+
def self._serializer_instance_method_defined?(name)
188+
_serializer_instance_methods.include?(name)
189+
end
190+
191+
def self._serializer_instance_methods
192+
@_serializer_instance_methods ||= (public_instance_methods - Object.public_instance_methods).to_set
193+
end
194+
private_class_method :_serializer_instance_methods
195+
187196
attr_accessor :object, :root, :scope
188197

189198
# `scope_name` is set as :current_user by default in the controller.
@@ -209,7 +218,7 @@ def json_key
209218
end
210219

211220
def read_attribute_for_serialization(attr)
212-
if _serializer_method_defined?(attr)
221+
if self.class._serializer_instance_method_defined?(attr)
213222
send(attr)
214223
elsif self.class._fragmented
215224
self.class._fragmented.read_attribute_for_serialization(attr)
@@ -227,15 +236,5 @@ def links
227236
protected
228237

229238
attr_accessor :instance_options
230-
231-
private
232-
233-
def _serializer_instance_methods
234-
@_serializer_instance_methods ||= (public_methods - Object.public_instance_methods).to_set
235-
end
236-
237-
def _serializer_method_defined?(name)
238-
_serializer_instance_methods.include?(name)
239-
end
240239
end
241240
end

0 commit comments

Comments
 (0)