iknow_view_models 3.2.12 → 3.2.13
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3991314cdb010347b417869ff3e2e22b0e7adb4ab590e25739cb6b12bf49a219
|
4
|
+
data.tar.gz: 0cd5994d07bdd9b9d311732be56b01a51d7b4f1eb71f7fa1d0217bf71911b97f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5cd70dd6f79db33a97dbdfb05eefec460c7e332784839ad461cf5a359307ce8abedb39c046d42d04a3b7355280d1ad54948cb6cc61fdc35effa0f684ea4c821
|
7
|
+
data.tar.gz: 6a673b6387892588434f981b57f8131e9c7a97991cc16d3901e72f043b9429efd0fef7a8e1f44cb0ea1ee364256d63d48f198a10e270b487d3da61311780eec7
|
@@ -182,9 +182,14 @@ class ViewModel::ActiveRecord < ViewModel::Record
|
|
182
182
|
end
|
183
183
|
|
184
184
|
# Constructs a preload specification of the required models for
|
185
|
-
# serializing/deserializing this view.
|
186
|
-
|
185
|
+
# serializing/deserializing this view. Cycles in the schema will be broken
|
186
|
+
# after two layers of eager loading.
|
187
|
+
def eager_includes(serialize_context: new_serialize_context, include_referenced: true, vm_path: [])
|
187
188
|
association_specs = {}
|
189
|
+
|
190
|
+
return nil if vm_path.count(self) > 2
|
191
|
+
|
192
|
+
child_path = vm_path + [self]
|
188
193
|
_members.each do |assoc_name, association_data|
|
189
194
|
next unless association_data.is_a?(AssociationData)
|
190
195
|
next if association_data.external?
|
@@ -201,7 +206,7 @@ class ViewModel::ActiveRecord < ViewModel::Record
|
|
201
206
|
case
|
202
207
|
when association_data.through?
|
203
208
|
viewmodel = association_data.direct_viewmodel
|
204
|
-
children = viewmodel.eager_includes(serialize_context: child_context, include_referenced: include_referenced)
|
209
|
+
children = viewmodel.eager_includes(serialize_context: child_context, include_referenced: include_referenced, vm_path: child_path)
|
205
210
|
|
206
211
|
when !include_referenced && association_data.referenced?
|
207
212
|
children = nil # Load up to the root viewmodel, but no further
|
@@ -210,13 +215,13 @@ class ViewModel::ActiveRecord < ViewModel::Record
|
|
210
215
|
children_by_klass = {}
|
211
216
|
association_data.viewmodel_classes.each do |vm_class|
|
212
217
|
klass = vm_class.model_class.name
|
213
|
-
children_by_klass[klass] = vm_class.eager_includes(serialize_context: child_context, include_referenced: include_referenced)
|
218
|
+
children_by_klass[klass] = vm_class.eager_includes(serialize_context: child_context, include_referenced: include_referenced, vm_path: child_path)
|
214
219
|
end
|
215
220
|
children = DeepPreloader::PolymorphicSpec.new(children_by_klass)
|
216
221
|
|
217
222
|
else
|
218
223
|
viewmodel = association_data.viewmodel_class
|
219
|
-
children = viewmodel.eager_includes(serialize_context: child_context, include_referenced: include_referenced)
|
224
|
+
children = viewmodel.eager_includes(serialize_context: child_context, include_referenced: include_referenced, vm_path: child_path)
|
220
225
|
end
|
221
226
|
|
222
227
|
association_specs[association_data.direct_reflection.name.to_s] = children
|
@@ -416,6 +416,11 @@ class ViewModel::ActiveRecordTest < ActiveSupport::TestCase
|
|
416
416
|
@list = List.new(child: List.new(child: nil))
|
417
417
|
end
|
418
418
|
|
419
|
+
def test_list_eager_includes
|
420
|
+
expected_includes = 3.times.inject(nil) { |x| DeepPreloader::Spec.new({ 'child' => x }) }
|
421
|
+
assert_equal(expected_includes, ListView.eager_includes)
|
422
|
+
end
|
423
|
+
|
419
424
|
def test_deserialize_context
|
420
425
|
view = {
|
421
426
|
'_type' => 'List',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iknow_view_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iKnow Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|