mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +00:00
Merge pull request #1650 from bf4/fix_serialization_scope
[FIX] serialization scope options
This commit is contained in:
@@ -30,8 +30,8 @@ module ActionController
|
||||
options[:adapter] = false
|
||||
end
|
||||
serializable_resource = ActiveModelSerializers::SerializableResource.new(resource, options)
|
||||
serializable_resource.serialization_scope ||= serialization_scope
|
||||
serializable_resource.serialization_scope_name = _serialization_scope
|
||||
serializable_resource.serialization_scope ||= options.fetch(:scope) { serialization_scope }
|
||||
serializable_resource.serialization_scope_name = options.fetch(:scope_name) { _serialization_scope }
|
||||
# For compatibility with the JSON renderer: `json.to_json(options) if json.is_a?(String)`.
|
||||
# Otherwise, since `serializable_resource` is not a string, the renderer would call
|
||||
# `to_json` on a String and given odd results, such as `"".to_json #=> '""'`
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user