Permalink
Browse files

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>
  • Loading branch information...
1 parent ccd4561 commit 2ea922bcec333b6484a295b4fee1f4fa75c5704d @tarmo tarmo committed with spastorino Jun 10, 2009
@@ -22,7 +22,7 @@ def replace(record)
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
@@ -215,6 +215,10 @@ def test_belongs_to_counter_with_reassigning
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

0 comments on commit 2ea922b

Please sign in to comment.