File tree Expand file tree Collapse file tree 3 files changed +23
-1
lines changed Expand file tree Collapse file tree 3 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -199,8 +199,12 @@ def attributes(options = {})
199
199
end
200
200
end
201
201
202
+ def associations
203
+ self . class . _associations . dup
204
+ end
205
+
202
206
def each_association ( &block )
203
- self . class . _associations . dup . each do |name , association_options |
207
+ associations . each do |name , association_options |
204
208
next unless object
205
209
association_value = send ( name )
206
210
Original file line number Diff line number Diff line change @@ -102,6 +102,13 @@ def custom_options
102
102
end
103
103
end
104
104
105
+ CustomizablePostSerializer = Class . new ( PostSerializer ) do
106
+ def associations
107
+ excludes = @options [ :excludes ] || [ ]
108
+ super . except ( *excludes )
109
+ end
110
+ end
111
+
105
112
SpammyPostSerializer = Class . new ( ActiveModel ::Serializer ) do
106
113
attributes :id
107
114
has_many :related
Original file line number Diff line number Diff line change @@ -145,6 +145,17 @@ def test_associations_custom_keys
145
145
assert expected_association_keys . include? :writer
146
146
assert expected_association_keys . include? :site
147
147
end
148
+
149
+ def test_overriding_associations
150
+ serializer = CustomizablePostSerializer . new ( @post , excludes : [ :comments ] )
151
+
152
+ association_keys = [ ]
153
+ serializer . each_association do |key , serializer , options |
154
+ association_keys << key
155
+ end
156
+
157
+ assert association_keys . exclude? :comments
158
+ end
148
159
end
149
160
end
150
161
end
You can’t perform that action at this time.
0 commit comments