Skip to content

Commit ca374bd

Browse files
authored
Merge pull request rails#49136 from fatkodima/fix-counter-caches-var-modification
Fix in-place modification of shared `_counter_cache_columns` class attribute
2 parents 49314ab + 2933e16 commit ca374bd

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

activerecord/lib/active_record/associations/builder/belongs_to.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def self.add_counter_cache_callbacks(model, reflection)
3737
}
3838

3939
klass = reflection.class_name.safe_constantize
40-
klass._counter_cache_columns << cache_column if klass && klass.respond_to?(:_counter_cache_columns)
40+
klass._counter_cache_columns |= [cache_column] if klass && klass.respond_to?(:_counter_cache_columns)
4141
end
4242

4343
def self.touch_record(o, changes, foreign_key, name, touch) # :nodoc:

activerecord/test/cases/counter_cache_test.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require "cases/helper"
44
require "models/topic"
55
require "models/bulb"
6+
require "models/person"
67
require "models/car"
78
require "models/aircraft"
89
require "models/wheel"
@@ -12,7 +13,6 @@
1213
require "models/categorization"
1314
require "models/dog"
1415
require "models/dog_lover"
15-
require "models/person"
1616
require "models/friendship"
1717
require "models/subscriber"
1818
require "models/subscription"
@@ -397,6 +397,11 @@ class ::SpecialReply < ::Reply
397397
end
398398
end
399399

400+
test "counter_cache_column?" do
401+
assert Person.counter_cache_column?("cars_count")
402+
assert_not Car.counter_cache_column?("cars_count")
403+
end
404+
400405
private
401406
def assert_touching(record, *attributes)
402407
record.update_columns attributes.index_with(5.minutes.ago)

0 commit comments

Comments
 (0)