Fix fragment caching inherited serializers to use distinct per-serializer caches.

This commit is contained in:
Logan Serman
2016-03-25 16:24:43 -05:00
parent 5af7d96294
commit d0389ca765
3 changed files with 24 additions and 7 deletions

View File

@@ -15,7 +15,7 @@ module ActiveModelSerializers
object = serializer.object
# It will split the serializer into two, one that will be cached and one that will not
serializers = fragment_serializer(object.class.name)
serializers = fragment_serializer
# Get serializable hash from both
cached_hash = serialize(object, serializers[:cached])
@@ -79,10 +79,12 @@ module ActiveModelSerializers
# User_AdminCachedSerializer
# User_AdminNonCachedSerializer
#
def fragment_serializer(name)
klass = serializer.class
cached = "#{to_valid_const_name(name)}CachedSerializer"
non_cached = "#{to_valid_const_name(name)}NonCachedSerializer"
def fragment_serializer
klass = serializer.class
serializer_class_name = to_valid_const_name(klass.name)
cached = "Cached#{serializer_class_name}"
non_cached = "NonCached#{serializer_class_name}"
cached_serializer = get_or_create_serializer(cached)
non_cached_serializer = get_or_create_serializer(non_cached)