diff --git a/lib/active_model/serializer/caching.rb b/lib/active_model/serializer/caching.rb
index 1f893189..7b3aa46f 100644
--- a/lib/active_model/serializer/caching.rb
+++ b/lib/active_model/serializer/caching.rb
@@ -216,65 +216,62 @@ module ActiveModel
# 1. Create a CachedSerializer and NonCachedSerializer from the serializer class
# 2. Serialize the above two with the given adapter
# 3. Pass their serializations to the adapter +::fragment_cache+
+ #
+ # It will split the serializer into two, one that will be cached and one that will not
+ #
+ # Given a resource name
+ # 1. Dynamically creates a CachedSerializer and NonCachedSerializer
+ # for a given class 'name'
+ # 2. Call
+ # CachedSerializer.cache(serializer._cache_options)
+ # CachedSerializer.fragmented(serializer)
+ # NonCachedSerializer.cache(serializer._cache_options)
+ # 3. Build a hash keyed to the +cached+ and +non_cached+ serializers
+ # 4. Call +cached_attributes+ on the serializer class and the above hash
+ # 5. Return the hash
+ #
+ # @example
+ # When +name+ is User::Admin
+ # creates the Serializer classes (if they don't exist).
+ # CachedUser_AdminSerializer
+ # NonCachedUser_AdminSerializer
+ #
+ # Given a hash of its cached and non-cached serializers
+ # 1. Determine cached attributes from serializer class options
+ # 2. Add cached attributes to cached Serializer
+ # 3. Add non-cached attributes to non-cached Serializer
def fetch_fragment_cache(adapter_instance)
- # It will split the serializer into two, one that will be cached and one that will not
-
- # Given a resource name
- # 1. Dynamically creates a CachedSerializer and NonCachedSerializer
- # for a given class 'name'
- # 2. Call
- # CachedSerializer.cache(serializer._cache_options)
- # CachedSerializer.fragmented(serializer)
- # NonCachedSerializer.cache(serializer._cache_options)
- # 3. Build a hash keyed to the +cached+ and +non_cached+ serializers
- # 4. Call +cached_attributes+ on the serializer class and the above hash
- # 5. Return the hash
- #
- # @example
- # When +name+ is User::Admin
- # creates the Serializer classes (if they don't exist).
- # CachedUser_AdminSerializer
- # NonCachedUser_AdminSerializer
- #
serializer_class_name = self.class.name.gsub('::'.freeze, '_'.freeze)
- cached_serializer = _get_or_create_fragment_serializer "Cached#{serializer_class_name}"
- non_cached_serializer = _get_or_create_fragment_serializer "NonCached#{serializer_class_name}"
-
self.class._cache_options ||= {}
self.class._cache_options[:key] = self.class._cache_key if self.class._cache_key
- cached_serializer.cache(self.class._cache_options)
- cached_serializer.type(self.class._type)
- non_cached_serializer.type(self.class._type)
-
- non_cached_serializer.fragmented(self)
- cached_serializer.fragmented(self)
-
- # Given a hash of its cached and non-cached serializers
- # 1. Determine cached attributes from serializer class options
- # 2. Add cached attributes to cached Serializer
- # 3. Add non-cached attributes to non-cached Serializer
attributes = self.class._attributes
cache_only = self.class._cache_only
cached_attributes = cache_only ? cache_only : attributes - self.class._cache_except
non_cached_attributes = attributes - cached_attributes
attributes_keys = self.class._attributes_keys
+ cached_serializer = _get_or_create_fragment_serializer "Cached#{serializer_class_name}"
+ cached_serializer.cache(self.class._cache_options)
+ cached_serializer.type(self.class._type)
+ cached_serializer.fragmented(self)
cached_attributes.each do |attribute|
options = attributes_keys[attribute] || {}
cached_serializer.attribute(attribute, options)
end
- non_cached_attributes.each do |attribute|
- options = attributes_keys[attribute] || {}
- non_cached_serializer.attribute(attribute, options)
- end
-
- # Get serializable hash from both
cached_hash = ActiveModelSerializers::SerializableResource.new(
object,
serializer: cached_serializer,
adapter: adapter_instance.class
).serializable_hash
+
+ non_cached_serializer = _get_or_create_fragment_serializer "NonCached#{serializer_class_name}"
+ non_cached_serializer.type(self.class._type)
+ non_cached_serializer.fragmented(self)
+ non_cached_attributes.each do |attribute|
+ options = attributes_keys[attribute] || {}
+ non_cached_serializer.attribute(attribute, options)
+ end
non_cached_hash = ActiveModelSerializers::SerializableResource.new(
object,
serializer: non_cached_serializer,