Counter_cache for has_many through associations

class User < ActiveRecord::Base
has_many :likes
has_many :liked_things, :through => :likes

class Thing < ActiveRecord::Base
has_many :likes
has_many :liked_by_users, :through => :likes

class Like < ActiveRecord::Base
belongs_to :user
belongs_to :shot

This is my setup, and I have a likes_count column on Things Table. Is
there any way to keep that count updating using counter_cache ? I got it
working counter_cache on has_many association but failing to do same
has_many through association.

I am struggling with this as well.

What appears to be happening is that the deletes from the join table do
not fire the counter_cache update.

From what I have read, delete’s do not fire events and that is the way
it is designed in Rails 4.

I have tried multiple workarounds from doing an after_save event,
putting the join table in it’s own model, etc… Nothing I have done
seems to decrement the count.

Anxious to see if any Ruby experts see this post and let us know the
best way to fix this.


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs