2014-09-24 90 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