Polymorphic relationships and counter cache

you may want to add the counter cache attribute to the attr_readonly list in the associated classes (e.g. class Post; attr_readonly :comments_count; end). http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to

:polymorphic

    Specify this association is a polymorphic association by passing true. 
    Note: If you’ve enabled the counter cache, then you may
    want to add the counter cache attribute to the attr_readonly list in
    the associated classes 
    (e.g. class Post; attr_readonly :comments_count; end).

It's none business of 'Polymorphic relationships and counter cache', it's about Multiple counter_cache in Rails model

By the way, for 'Polymorphic relationships and counter cache'

class Code < ActiveRecord::Base
  has_many :notes, :as => :noteable
end

class Issue < ActiveRecord::Base
  has_many :notes, :as => :noteable
end

class Note < ActiveRecord::Base
  belongs_to :noteable, polymorphic: true, counter_cache: :noteable_count
end

in your table 'issues', you should have the column 'noteable_count', same as your table 'codes'


My suggestion would be to manually increment or decrement your counter cache in an after_commit callback so that you can test if the record was persisted and it updates outside of the transaction. This is because it will make your code more explicit, and less mysterious on how and when the cache is updated or invalidated.

Also manually updating the cache gives you extra flexibility if for example you wanted to give some users more authority when they agree or disagree with a comment (e.g. karma systems).