iknow_view_models 3.14.0 → 3.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6b63efe5e196fe293c68497b57f53356366632e08f3b2ed97b2240ceb1e2f96
4
- data.tar.gz: e8c8d932be65e4f811ac1f80b45338a66681ad6c9b3e5e2957ce123ccff4b70c
3
+ metadata.gz: dfaa2071c1fc02ad4120eb77077aa261db93104814831dfa882c999048f4a557
4
+ data.tar.gz: 8af46af652b9170e6890864e8065d95ba4b3c48c4c1677542908a07297bd9f88
5
5
  SHA512:
6
- metadata.gz: 7e050339a0ac0d06d70e55edc30a2f7a8afe2a58d64f933cc48de18de9c7f98a1fc21b0fe50666b459cf3971cc89b32c75b72fb76c30e6cf3c3f9294e7a864b4
7
- data.tar.gz: 8c7fb549e253196df7ab6ca2e56f0659cff104e0e3e9c58806d3681b67ef8c69ecfdae8a781110768249f738ff69e81a0b86360c66f45fb7536ef9bf9ac3fced
6
+ metadata.gz: e9a1e0088161dc9f347c4427486f10bb62f845a0121176382ea44296437a088550d38b532b4d9dd9e3aa7e6fbcd57e6be894a912de44e399a85d44c245236e67
7
+ data.tar.gz: 137ea0385c005c9380ef130539dc0b65e0b7a9485a8bc5d2f08c127e210f0d1bd43af410cd49e09617d6b836bd1ffd12d4b59d708cc4b44bf8cffe021fb63c02
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IknowViewModels
4
- VERSION = '3.14.0'
4
+ VERSION = '3.14.1'
5
5
  end
@@ -449,5 +449,10 @@ class ViewModel::ActiveRecord < ViewModel::Record
449
449
  super
450
450
  end
451
451
 
452
+ # As an AR view, this view itself is preloadable
453
+ def preloadable_dependencies
454
+ [self]
455
+ end
456
+
452
457
  self.abstract_class = true
453
458
  end
data/lib/view_model.rb CHANGED
@@ -337,11 +337,14 @@ class ViewModel
337
337
  end
338
338
 
339
339
  def preload_for_serialization(viewmodels, include_referenced: true, lock: nil)
340
- Array.wrap(viewmodels).group_by(&:class).each do |type, views|
341
- DeepPreloader.preload(views.map(&:model),
342
- type.eager_includes(include_referenced: include_referenced),
343
- lock: lock)
344
- end
340
+ Array.wrap(viewmodels)
341
+ .flat_map(&:preloadable_dependencies)
342
+ .group_by(&:class)
343
+ .each do |type, views|
344
+ DeepPreloader.preload(views.map(&:model),
345
+ type.eager_includes(include_referenced: include_referenced),
346
+ lock: lock)
347
+ end
345
348
  end
346
349
  end
347
350
 
@@ -423,8 +426,16 @@ class ViewModel
423
426
  context.for_child(self, association_name: member_name)
424
427
  end
425
428
 
426
- def preload_for_serialization(lock: nil)
427
- ViewModel.preload_for_serialization([self], lock: lock)
429
+ def preload_for_serialization(include_referenced: true, lock: nil)
430
+ ViewModel.preload_for_serialization([self], include_referenced: include_referenced, lock: lock)
431
+ end
432
+
433
+ # Returns a collection of zero or more AR-backed views that this view depends
434
+ # on that can have their dependencies preloaded via `eager_includes`. This can
435
+ # be overridden for non-AR view that wrap AR-backed views to expose those
436
+ # dependencies for preloading.
437
+ def preloadable_dependencies
438
+ []
428
439
  end
429
440
 
430
441
  def ==(other)
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.14.0
4
+ version: 3.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - iKnow Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-24 00:00:00.000000000 Z
11
+ date: 2025-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack