counter_cache and collections

I've got a has_many/belongs_to association between two Rails models and I'm caching the child counter in the parent model via a counter_cache. When adding a child to the parent via the '<<' method of the parent, I was expecting the in-memory child counter in the parent to be updated, but it doesn't appear as though it is. My controller code looks something like this:

def create      @flag = Flag.new(params[:flag])      @flag.user = authenticated_user      @listing = Listing.find(params[:listing_id])      @listing.flags << @flag end

If I add a call to @listing.save after adding the child to the parent, the in-memory counter is updated, but I didn't think the call to 'save' was necessary. Am I doing something wrong or is this WAD?

I also tried

def create   @listing = Listing.find(params[:listing_id])   @flag = listing.flags.create(params[:flag])   @flag.user = authenticated_user   @flag.save end

but that didn't do the trick either. The odd thing is when I try something similar in script/console, sometimes @listing.flags.size == 1 after the call to listing.flags.create and sometimes it remains at 0. I should also mention that the flag model uses the acts_as_tree plugin in Rails 2.0, but does not use the counter_cache option of the plugin.