counter_cache for has_many through associations

49 views
Skip to first unread message

Amit

unread,
Jan 10, 2015, 1:53:54 PM1/10/15
to rubyonra...@googlegroups.com
class User < ActiveRecord::Base
  has_many :likes
  has_many :liked_things, :through => :likes
end

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

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

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 with has_many through association.


John Sanderbeck

unread,
Jan 7, 2016, 9:32:14 AM1/7/16
to rubyonra...@googlegroups.com
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.

John

--
Posted via http://www.ruby-forum.com/.
Reply all
Reply to author
Forward
0 new messages