Counter cache not decrementing

This is what I have

    belongs_to :user, :counter_cache => true     belongs_to :vote_item, :counter_cache => true     belongs_to :vote_topic, :counter_cache => true

##User model

def vote_for(vid, vtid)         Vote.create(:user_id => self.id, :vote_item_id => vid, :vote_topic_id => vtid)     end

    def cancel_vote(vid, vtid)         Vote.find(:first, :select => "id", :conditions => ['vote_item_id = ? AND vote_topic_id = ? AND user_id = ?', vid, vtid, self.id]).destroy     end

When a vote is created the votes_count in VoteItem and VoteTopic are updated correctly. But when a vote is destroyed or cancelled the counter is not decremented.

Please help

This is what I have

belongs\_to :user, :counter\_cache => true
belongs\_to :vote\_item, :counter\_cache => true
belongs\_to :vote\_topic, :counter\_cache => true

##User model

def vote_for(vid, vtid) Vote.create(:user_id => self.id, :vote_item_id => vid, :vote_topic_id => vtid) end

def cancel\_vote\(vid, vtid\)
    Vote\.find\(:first, :select => "id", :conditions =>

['vote_item_id = ? AND vote_topic_id = ? AND user_id = ?', vid, vtid, self.id]).destroy end

When a vote is created the votes_count in VoteItem and VoteTopic are updated correctly. But when a vote is destroyed or cancelled the counter is not decremented.

Stab in the dark: because your select clause only includes id, rails doesn't know the user_id/vote_item_id/vote_topic_id and so doesn't know which user/vote_item/vote_topic to update.

Fred

Bulls eye! That was it