counter_cache won't increment

Eleo wrote:

I'm having an odd problem. I've pinpointed what's causing it, but it's
not making any sense.

class Discussion < ActiveRecord::Base
  has_many :posts, :dependent => :destroy

  def bump

class Post < ActiveRecord::Base
  belongs_to :discussion, :counter_cache => true

  after_create :bump_discussion

  def bump_discussion

Now I can do something obvious like
post =
post.discussion = Discussion.find(:first)

But this won't increment posts_count in the discussions table. HOWEVER,
if I remove the bump_discussion method then posts_count DOES get
updated. This doesn't really make any sense. My guess is that updating
the row one way is overriding the other update.

Currently counter_cache fields are not excluded from being updated
when a save is done, so the updated count, written directly to the DB,
is getting overwritten by the old count in the Discussion object.

The most simple solution is to rewrite bump as

def bump
   update_all "bumped_on = #{self.class.sanitize(}", "id = #{id}"