counter_culture 3.10.0 → 3.10.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: 78d568cfdb319852f7cbfa1f09b3b17d7a583f0a56afcba26ffc6db937906c0f
4
- data.tar.gz: 220516dcbbe2966749fd1c74a6720e9bb82565bba0b41f053fc94c9948db4b73
3
+ metadata.gz: 157dbe49de1382e3c20686dbb3b22327af960831612683cb08b59db7ccf8dd8e
4
+ data.tar.gz: 88db04f7a2d879c9b25255f627d13f823f7bf487cf42fb5efc7d9c764d890b59
5
5
  SHA512:
6
- metadata.gz: 5fb91dc191fad8487358613ac76eae7887113b7191ced1b59acde6a84963c2813787c1036a07490f4579e423bb9cedcf3ba324b6d2f4e1cac903cf5721949445
7
- data.tar.gz: c86cf4baee69aceec50718877ab0fd9ff6064bd460d4f0fff8615eb0836cc5c3d74e44178fbd87976a7eab18a106a5f25e09179a85380a93472cbf1e715f14ce
6
+ metadata.gz: f0ddda7335aa711ca57fa20e36e4b0a3a12086263281994093749407662b2b0c5ab32851ce14c3f3b44b960a11a758b2f4462fe88c93b5f8b65bde4a05eaa2b0
7
+ data.tar.gz: 020d0e8e5084419a67c14a102d77ba76d1b445fb980fa3e441e009114f0a4e6074d47e11689aadc16edf5efdee2b4f3b2e7db15787cb0a57de125a31faecd4eb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 3.10.1 (April 30, 2025)
2
+
3
+ Bigfixes:
4
+ - Fix issue when using `delegate` instead of `has_many :through` (#411)
5
+
1
6
  ## 3.10.0 (April 15, 2025)
2
7
 
3
8
  New features:
@@ -370,15 +370,31 @@ module CounterCulture
370
370
  def assign_to_associated_object(obj, relation, change_counter_column, operator, delta_magnitude)
371
371
  association_name = relation_reflect(relation).name
372
372
 
373
- return unless obj.respond_to?(association_name)
373
+ association_object = association_object_for_assign(obj, association_name)
374
+ return if association_object.blank?
374
375
 
375
- if obj.association(association_name).loaded? && (association_object = obj.public_send(association_name)).present?
376
- association_object.assign_attributes(
377
- change_counter_column =>
378
- association_object_new_counter(association_object, change_counter_column, operator, delta_magnitude)
379
- )
380
- association_object_clear_change(association_object, change_counter_column)
376
+ association_object.assign_attributes(
377
+ change_counter_column =>
378
+ association_object_new_counter(association_object, change_counter_column, operator, delta_magnitude)
379
+ )
380
+ association_object_clear_change(association_object, change_counter_column)
381
+ end
382
+
383
+ def association_object_for_assign(obj, association_name)
384
+ if obj.class.reflect_on_all_associations.
385
+ find { |assoc| assoc.name.to_sym == association_name.to_sym }.
386
+ blank?
387
+ # This means that this isn't defined as an association; either it
388
+ # doesn't exist at all, or it uses delegate. In either case, we can't
389
+ # update the count this way.
390
+ return
391
+ end
392
+ if !obj.association(association_name).loaded?
393
+ # If the association isn't loaded, no need to update the count
394
+ return
381
395
  end
396
+
397
+ obj.public_send(association_name)
382
398
  end
383
399
 
384
400
  def association_object_clear_change(association_object, change_counter_column)
@@ -1,3 +1,3 @@
1
1
  module CounterCulture
2
- VERSION = '3.10.0'.freeze
2
+ VERSION = '3.10.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: counter_culture
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.0
4
+ version: 3.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus von Koeller
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-04-15 00:00:00.000000000 Z
11
+ date: 2025-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord