Don't increment and then decrement the same counter when re-assigning a belongs_to association

[#2786 state:committed]

Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
This commit is contained in:
Tarmo Tänav
2009-06-10 16:24:32 +03:00
committed by Santiago Pastorino
parent ccd45618ed
commit 2ea922bcec
2 changed files with 5 additions and 1 deletions

View File

@@ -22,7 +22,7 @@ module ActiveRecord
else
raise_on_type_mismatch(record)
if counter_cache_name && !@owner.new_record?
if counter_cache_name && !@owner.new_record? && record.id != @owner[@reflection.primary_key_name]
@reflection.klass.increment_counter(counter_cache_name, record.id)
@reflection.klass.decrement_counter(counter_cache_name, @owner[@reflection.primary_key_name]) if @owner[@reflection.primary_key_name]
end

View File

@@ -215,6 +215,10 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
r1.topic = Topic.find(t2.id)
assert_no_queries do
r1.topic = t2
end
assert r1.save
assert_equal 0, Topic.find(t1.id).replies.size
assert_equal 1, Topic.find(t2.id).replies.size