aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2008-12-02 14:12:09 -0300
committerJeremy Kemper <jeremy@bitsweat.net>2008-12-10 10:59:52 -0800
commit05f2183747c8e75c9e8bbaadb9573b4bdf41ecfc (patch)
tree6286202b3884a8b20be2f027ce76a49642143cc9 /activerecord/lib
parent355f41d8aafd75d76db25cdda4736e0052b0605c (diff)
downloadrails-05f2183747c8e75c9e8bbaadb9573b4bdf41ecfc.tar.gz
rails-05f2183747c8e75c9e8bbaadb9573b4bdf41ecfc.tar.bz2
rails-05f2183747c8e75c9e8bbaadb9573b4bdf41ecfc.zip
Fix: counter_cache should decrement on deleting associated records.
[#1195 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/associations/association_collection.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/association_collection.rb b/activerecord/lib/active_record/associations/association_collection.rb
index 0ff91fbdf8..0ad58010b2 100644
--- a/activerecord/lib/active_record/associations/association_collection.rb
+++ b/activerecord/lib/active_record/associations/association_collection.rb
@@ -202,6 +202,9 @@ module ActiveRecord
records.each do |record|
@target.delete(record)
+ if respond_to?(:cached_counter_attribute_name) && @owner[cached_counter_attribute_name]
+ @owner.class.decrement_counter(cached_counter_attribute_name, @owner.send(@owner.class.primary_key))
+ end
callback(:after_remove, record)
end
end