File tree Expand file tree Collapse file tree 3 files changed +17
-2
lines changed
lib/active_model/serializer/adapter Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -54,8 +54,8 @@ def cached_attributes(klass, serializers)
54
54
end
55
55
56
56
def fragment_serializer ( name , klass )
57
- cached = "#{ name . capitalize } CachedSerializer"
58
- non_cached = "#{ name . capitalize } NonCachedSerializer"
57
+ cached = "#{ to_valid_const_name ( name ) } CachedSerializer"
58
+ non_cached = "#{ to_valid_const_name ( name ) } NonCachedSerializer"
59
59
60
60
Object . const_set cached , Class . new ( ActiveModel ::Serializer ) unless Object . const_defined? ( cached )
61
61
Object . const_set non_cached , Class . new ( ActiveModel ::Serializer ) unless Object . const_defined? ( non_cached )
@@ -72,6 +72,10 @@ def fragment_serializer(name, klass)
72
72
cached_attributes ( klass , serializers )
73
73
serializers
74
74
end
75
+
76
+ def to_valid_const_name ( name )
77
+ name . gsub ( '::' , '_' )
78
+ end
75
79
end
76
80
end
77
81
end
Original file line number Diff line number Diff line change @@ -4,11 +4,14 @@ class Serializer
4
4
class Adapter
5
5
class FragmentCacheTest < Minitest ::Test
6
6
def setup
7
+ @spam = Spam ::UnrelatedLink . new ( id : "spam-id-1" )
7
8
@author = Author . new ( name : 'Joao M. D. Moura' )
8
9
@role = Role . new ( name : 'Great Author' , description :nil )
9
10
@role . author = [ @author ]
10
11
@role_serializer = RoleSerializer . new ( @role )
12
+ @spam_serializer = Spam ::UnrelatedLinkSerializer . new ( @spam )
11
13
@role_hash = FragmentCache . new ( RoleSerializer . adapter . new ( @role_serializer ) , @role_serializer , { } )
14
+ @spam_hash = FragmentCache . new ( Spam ::UnrelatedLinkSerializer . adapter . new ( @spam_serializer ) , @spam_serializer , { } )
12
15
end
13
16
14
17
def test_fragment_fetch_with_virtual_attributes
@@ -20,6 +23,13 @@ def test_fragment_fetch_with_virtual_attributes
20
23
}
21
24
assert_equal ( @role_hash . fetch , expected_result )
22
25
end
26
+
27
+ def test_fragment_fetch_with_namespaced_object
28
+ expected_result = {
29
+ id : @spam . id
30
+ }
31
+ assert_equal ( @spam_hash . fetch , expected_result )
32
+ end
23
33
end
24
34
end
25
35
end
Original file line number Diff line number Diff line change @@ -250,6 +250,7 @@ def maker
250
250
end
251
251
252
252
Spam ::UnrelatedLinkSerializer = Class . new ( ActiveModel ::Serializer ) do
253
+ cache only : [ :id ]
253
254
attributes :id
254
255
end
255
256
You can’t perform that action at this time.
0 commit comments