mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 15:23:06 +00:00
Distinguish options ivar from local; Extract latent Adapter::CachedSerializer
This commit is contained in:
@@ -2,7 +2,7 @@ class ActiveModel::Serializer::Adapter::FragmentCache
|
||||
attr_reader :serializer
|
||||
|
||||
def initialize(adapter, serializer, options)
|
||||
@options = options
|
||||
@instance_options = options
|
||||
@adapter = adapter
|
||||
@serializer = serializer
|
||||
end
|
||||
@@ -16,19 +16,23 @@ class ActiveModel::Serializer::Adapter::FragmentCache
|
||||
cached_serializer = serializers[:cached].constantize.new(serializer.object)
|
||||
non_cached_serializer = serializers[:non_cached].constantize.new(serializer.object)
|
||||
|
||||
cached_adapter = @adapter.class.new(cached_serializer, @options)
|
||||
non_cached_adapter = @adapter.class.new(non_cached_serializer, @options)
|
||||
cached_adapter = adapter.class.new(cached_serializer, instance_options)
|
||||
non_cached_adapter = adapter.class.new(non_cached_serializer, instance_options)
|
||||
|
||||
# Get serializable hash from both
|
||||
cached_hash = cached_adapter.serializable_hash
|
||||
non_cached_hash = non_cached_adapter.serializable_hash
|
||||
|
||||
# Merge both results
|
||||
@adapter.fragment_cache(cached_hash, non_cached_hash)
|
||||
adapter.fragment_cache(cached_hash, non_cached_hash)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
ActiveModelSerializers.silence_warnings do
|
||||
attr_reader :instance_options, :adapter
|
||||
end
|
||||
|
||||
def cached_attributes(klass, serializers)
|
||||
attributes = serializer.class._attributes
|
||||
cached_attributes = (klass._cache_only) ? klass._cache_only : attributes.reject { |attr| klass._cache_except.include?(attr) }
|
||||
|
||||
Reference in New Issue
Block a user