ar_lazy_preload 0.5.1 → 0.5.2

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: 0f5333ce93f4dabe64d5f71e9c838c883a7a40f859cec39b80eb60b60f7e0dea
4
- data.tar.gz: 7795be2e1dc2f6661deeb3b5a014de62b927004c40911ee6dab0299d493efd56
3
+ metadata.gz: f8b1ef234e5a995bfce176e47fe5526fba9330b61cc27374e6667a5f5dfca3af
4
+ data.tar.gz: 3516b8bf449802b2ba3ff7022faec299ff274fe4716db884e46da63fe47d5ac9
5
5
  SHA512:
6
- metadata.gz: 4a96f77158652b6cd1923c6e48f7f068f0d12950ad918718229b0bb2763c4c90183a6dadfdcff043be84a5eb06129efa199530648c009c326f0415616658b7d6
7
- data.tar.gz: e3aadc85c581e91a17642547e2527f0b210e4a899f2bb0be2d77c2589fd9016fe811910af53232bf222bf223312261b38a6a1d7b29ff9e85a8efd94b8e49990c
6
+ metadata.gz: 80a0a1e05b961a6d66b20c0b5e1a32ee2824d868e7e96d25e85b4e2b3c48baa1ee9129cf934b71e73a2887245faa9f54b3ecc23cc7815d60c30efc8bca9fbb7b
7
+ data.tar.gz: bbb5f854ed701c562d31f00cf3f832eb668c42aca809e4376aed4b78c114bd3c25db15edea712d65419a23c3fbbe1dfac5d698055dad5c5ae61ea837ea6fa273
@@ -28,8 +28,10 @@ module ArLazyPreload
28
28
  associated_records = parent_context.records.flat_map do |record|
29
29
  next if record.nil?
30
30
 
31
- record_association = record.association(association_name)
32
31
  reflection = reflection_cache[record.class]
32
+ next if reflection.nil?
33
+
34
+ record_association = record.association(association_name)
33
35
  reflection.collection? ? record_association.target : record_association.reader
34
36
  end
35
37
 
@@ -44,7 +44,11 @@ module ArLazyPreload
44
44
  private
45
45
 
46
46
  def perform_preloading(association_name)
47
- preloader.preload(records, association_name)
47
+ filtered_records = records.select do |record|
48
+ reflection_names_cache[record.class].include?(association_name)
49
+ end
50
+ preloader.preload(filtered_records, association_name)
51
+
48
52
  loaded_association_names.add(association_name)
49
53
 
50
54
  AssociatedContextBuilder.prepare(
@@ -64,6 +68,12 @@ module ArLazyPreload
64
68
  def preloader
65
69
  @preloader ||= ActiveRecord::Associations::Preloader.new
66
70
  end
71
+
72
+ def reflection_names_cache
73
+ @reflection_names_cache ||= Hash.new do |hash, klass|
74
+ hash[klass] = klass.reflect_on_all_associations.map(&:name)
75
+ end
76
+ end
67
77
  end
68
78
  end
69
79
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArLazyPreload
4
- VERSION = "0.5.1"
4
+ VERSION = "0.5.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_lazy_preload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - DmitryTsepelev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-28 00:00:00.000000000 Z
11
+ date: 2020-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails