@@ -120,33 +120,33 @@ def relationships_for(serializer)
120
120
end
121
121
122
122
def included_for ( serializer )
123
- included_associations = serializer . expand_includes ( @included )
124
- included = included_associations . flat_map do |association , assoc_includes |
125
- _included_for ( association . serializer , assoc_includes )
123
+ included = [ ]
124
+ included_associations = expand_includes ( @included , serializer . associations )
125
+ included_associations . each do |association , assoc_includes |
126
+ _included_for ( included , association . serializer , assoc_includes )
126
127
end
127
128
128
- included . uniq
129
+ included
129
130
end
130
131
131
- def _included_for ( serializer , includes )
132
+ def _included_for ( included , serializer , includes )
132
133
if serializer . respond_to? ( :each )
133
- serializer . flat_map { |s | _included_for ( s , includes ) } . uniq
134
+ serializer . each { |s | _included_for ( included , s , includes ) }
134
135
else
135
- return [ ] unless serializer && serializer . object
136
+ return unless serializer && serializer . object
136
137
137
138
primary_data = primary_data_for ( serializer , @options )
138
139
relationships = relationships_for ( serializer )
139
140
primary_data [ :relationships ] = relationships if relationships . any?
140
141
141
- included = [ primary_data ]
142
+ return if included . include? ( primary_data )
143
+
144
+ included . push ( primary_data )
142
145
143
146
included_associations = serializer . expand_includes ( includes )
144
147
included_associations . each do |association , assoc_includes |
145
- included . concat ( _included_for ( association . serializer , assoc_includes ) )
146
- included . uniq!
148
+ _included_for ( included , association . serializer , assoc_includes )
147
149
end
148
-
149
- included
150
150
end
151
151
end
152
152
0 commit comments