From a765c8426fe39c73cf9f3ad7f8edcf588c01a11d Mon Sep 17 00:00:00 2001
From: Matthew Robertson <matthewrobertson03@gmail.com>
Date: Sat, 1 Dec 2012 17:56:28 -0800
Subject: Fix for has_many_through counter_cache bug

This commit fixes reported issue #7630 in which counter
caches were not being updated properly when replacing
has_many_through relationships
---
 .../lib/active_record/associations/has_many_through_association.rb   | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'activerecord/lib')

diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb
index c7d8a84a7e..c3266f2bb4 100644
--- a/activerecord/lib/active_record/associations/has_many_through_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -153,6 +153,11 @@ module ActiveRecord
 
           delete_through_records(records)
 
+          if source_reflection.options[:counter_cache]
+            counter = source_reflection.counter_cache_column
+            klass.decrement_counter counter, records.map(&:id)
+          end
+
           if through_reflection.macro == :has_many && update_through_counter?(method)
             update_counter(-count, through_reflection)
           end
-- 
cgit v1.2.3