页面模型
has_many :categorization
has_many :categories, :through => :categorization
类别模型
has_many :categorization
has_many :pages, :through => :categorization
分类模型
belongs_to :page
belongs_to :category, :counter_cache => :pages_count
当我编辑页面并更改页面类别时,它不会更新pages_count。我错过了什么或这是正常的吗?我怎样才能使它发挥作用?
更新
我在类别表上有pages_count列,并且在创建和销毁后计数器缓存正在工作。
答案 0 :(得分:3)
我找到了解决方案。在Rails 3.1.0.beta中修复了此问题。也许它可以帮助那些有同样问题的人。我花了4个小时才发现。 Commit is here
答案 1 :(得分:0)
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
根据文档,您需要在页面表中添加一列,例如#{table_name}_count
。
运行新迁移:
script/generate migration add_category_count_to_pages
然后添加此操作进行迁移:
add_column :pages, :categories_count, :integer
然后rake db:migrate
这应该照顾它。
计数器缓存需要放在关联的表上:
classificationization.rb model:
belongs_to :page, :counter_cache => :pages_count
belongs_to :category