Merge pull request #1650 from bf4/fix_serialization_scope

[FIX] serialization scope options
This commit is contained in:
Benjamin Fleischer
2016-04-01 14:17:19 -05:00
4 changed files with 70 additions and 43 deletions

View File

@@ -96,16 +96,18 @@ module ActiveModel
end
end
def self._serializer_instance_method_defined?(name)
_serializer_instance_methods.include?(name)
# rubocop:disable Style/ClassVars
def self.method_added(method_name)
@@_serializer_instance_methods ||= Hash.new { |h, k| h[k] = Set.new }
@@_serializer_instance_methods[self] << method_name
end
# TODO: Fix load-order failures when different serializer instances define different
# scope methods
def self._serializer_instance_methods
@_serializer_instance_methods ||= (public_instance_methods - Object.public_instance_methods).to_set
def self._serializer_instance_method_defined?(name)
@_serializer_instance_methods ||= (ActiveModel::Serializer.public_instance_methods - Object.public_instance_methods).to_set
@_serializer_instance_methods.include?(name) ||
@@_serializer_instance_methods[self].include?(name)
end
private_class_method :_serializer_instance_methods
# rubocop:enable Style/ClassVars
attr_accessor :object, :root, :scope