Skip to content

Commit 5706e7d

Browse files
committed
serializer inherits cache configuration
1 parent d02cd30 commit 5706e7d

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

lib/active_model/serializer.rb

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,16 @@ class Serializer
3030
class << self
3131
attr_accessor :_attributes
3232
attr_accessor :_attributes_keys
33-
attr_accessor :_cache
34-
attr_accessor :_fragmented
35-
attr_accessor :_cache_key
36-
attr_accessor :_cache_only
37-
attr_accessor :_cache_except
38-
attr_accessor :_cache_options
39-
attr_accessor :_cache_digest
33+
end
34+
35+
with_options instance_writer: false, instance_reader: false do |serializer|
36+
serializer.class_attribute :_cache
37+
serializer.class_attribute :_fragmented
38+
serializer.class_attribute :_cache_key
39+
serializer.class_attribute :_cache_only
40+
serializer.class_attribute :_cache_except
41+
serializer.class_attribute :_cache_options
42+
serializer.class_attribute :_cache_digest
4043
end
4144

4245
def self.inherited(base)

test/serializers/cache_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ def setup
3434
@blog_serializer = BlogSerializer.new(@blog)
3535
end
3636

37+
def test_inherited_cache_configuration
38+
inherited_serializer = Class.new(PostSerializer)
39+
40+
assert_equal PostSerializer._cache_key, inherited_serializer._cache_key
41+
assert_equal PostSerializer._cache_options, inherited_serializer._cache_options
42+
end
43+
44+
def test_override_cache_configuration
45+
inherited_serializer = Class.new(PostSerializer) do
46+
cache key: 'new-key'
47+
end
48+
49+
assert PostSerializer._cache_key == 'post'
50+
assert inherited_serializer._cache_key == 'new-key'
51+
end
52+
3753
def test_cache_definition
3854
assert_equal(ActionController::Base.cache_store, @post_serializer.class._cache)
3955
assert_equal(ActionController::Base.cache_store, @author_serializer.class._cache)

0 commit comments

Comments
 (0)