aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/associations/belongs_to_association.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/associations/belongs_to_association.rb b/activerecord/lib/active_record/associations/belongs_to_association.rb
index 2c5ad9d1c0..5ce2a5dcb7 100644
--- a/activerecord/lib/active_record/associations/belongs_to_association.rb
+++ b/activerecord/lib/active_record/associations/belongs_to_association.rb
@@ -15,7 +15,7 @@ module ActiveRecord
set_inverse_instance(record)
@updated = true
else
- update_counters(record)
+ update_counters_without_record
remove_keys
end
@@ -42,11 +42,15 @@ module ActiveRecord
return unless counter_cache_name && owner.persisted?
- if record
- update_with_record record, counter_cache_name
- else
- update_without_record counter_cache_name
- end
+ update_with_record record, counter_cache_name
+ end
+
+ def update_counters_without_record
+ counter_cache_name = reflection.counter_cache_column
+
+ return unless counter_cache_name && owner.persisted?
+
+ update_without_record counter_cache_name
end
def update_with_record record, counter_cache_name