2014-09-24 89 views
2

这个计数器缓存似乎没有正常工作,尽管就我所知我已经做了一切正确的事情。Rails 4.1计数器缓存没有更新

user.rb:

class User < ActiveRecord::Base 
    has_many :search_stats, counter_cache: true 
end 

迁移:

class AddSearchStatsCounterCacheToUsers < ActiveRecord::Migration 
    def up 
    add_column :users, :search_stats_count, :integer, default: 0, null: false 

    User.reset_column_information 
    User.find_each do |u| 
     u.update_attribute(:search_stats_count, u.search_stats.count) 
    end 
    end 

    def down 
    remove_column :users, :search_stats_count 
    end 
end 

为什么这不更新计数器?

user = User.find(user_id) 
user.search_stats.create!(search_params: search_params.to_json) 
+0

检查你的日志,你得到了'search_stats_count'的一个Unpermitted params错误? – kobaltz 2014-09-24 14:27:19

+0

对不起。我刚刚意识到我在这里做错了什么。我需要一杯啤酒。 – astephenb 2014-09-24 14:37:33

回答

4

严重的脑屁。 counter_cache选项应位于belong_to而不是has_many。明确指出在Rails docs