更新后计数器缓存不起作用

时间:2011-02-28 00:20:58

标签: ruby-on-rails

页面模型

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列,并且在创建和销毁后计数器缓存正在工作。

2 个答案:

答案 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
相关问题