forest_liana 9.14.0 → 9.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: 133660170841c0069ffdc0da3e2a4918e4147f417eae55c87b79bb300d9924b0
4
- data.tar.gz: eba503c46d489b6f6a4e81f26764f284574db290aed180755c6ca33841fc8b19
3
+ metadata.gz: e36ceb8802f17dd57f5c777b1d0c47570ee12259c78048735ad9bd75166e099d
4
+ data.tar.gz: 4eb56b56fb1392a0750f0e522676b15e34d83ae725b5218010685ca278b7d10b
5
5
  SHA512:
6
- metadata.gz: a1b5122e4700ae49500fbfc7b7c1060561e3a73cdfe3c980f946453c54eac0fa0c0982914b2ffcb3a18710d9e5c4fddb0cc7b6a12f18feca424d64067987691d
7
- data.tar.gz: 4b4183d21184e1986ca78158f7d6e99aae06ea6767292448ddb1bc29b00f3fe2862000d9c642eb8b8c84e4ce19166778a5fa5e3439cdac1c33e925d2f0ce988f
6
+ metadata.gz: 8db001396703db0cd5277f501e93fa43efaf771baa8852e561d5dcf706a862e6bceaa20ababeed0702aae66ebea3961b33257308356a175e47ed2a08193364ff
7
+ data.tar.gz: 313aed4b4ac152cd4baba032f875016d1c87162a04e957851f4ed9495eebdf8104aaea238db0ea5442a7213661697d5b8acbcbaa2686f4ab4af83cd095ac0879
@@ -139,10 +139,10 @@ module ForestLiana
139
139
 
140
140
  next if !should_include_attr?(attribute_name, attr_data)
141
141
 
142
- unless relation.polymorphic?
142
+ unless relation.nil? || (relation.respond_to?(:polymorphic?) && relation.polymorphic?)
143
143
  relation_class_name = ForestLiana.name_for(relation.klass).demodulize
144
144
 
145
- if object.send(relation.foreign_key.to_sym) &&
145
+ if object.respond_to?(relation.foreign_key.to_sym) &&
146
146
  @options[:fields][relation_class_name]&.size == 1 &&
147
147
  @options[:fields][relation_class_name]&.include?(relation.klass.primary_key.to_sym)
148
148
 
@@ -56,10 +56,22 @@ module ForestLiana
56
56
 
57
57
  def records
58
58
  records = @records.offset(offset).limit(limit).to_a
59
-
60
59
  polymorphic_association, preload_loads = analyze_associations(@resource)
60
+
61
61
  if polymorphic_association && Rails::VERSION::MAJOR >= 7
62
- # TODO
62
+ preloader = ActiveRecord::Associations::Preloader.new(records: records, associations: polymorphic_association)
63
+ preloader.loaders
64
+ preloader.branches.each do |branch|
65
+ branch.loaders.each do |loader|
66
+ records_by_owner = loader.records_by_owner
67
+ records_by_owner.each do |record, association|
68
+ record_index = records.find_index { |r| r.id == record.id }
69
+ records[record_index].define_singleton_method(branch.association) do
70
+ association.first
71
+ end
72
+ end
73
+ end
74
+ end
63
75
  end
64
76
 
65
77
  preload_cross_database_associations(records, preload_loads)
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "9.14.0"
2
+ VERSION = "9.14.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_liana
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.14.0
4
+ version: 9.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-26 00:00:00.000000000 Z
11
+ date: 2025-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails