Rails 4.1计数器缓存不更新

时间:2014-09-24 14:24:39

标签: ruby-on-rails ruby-on-rails-4 counter-cache

这个计数器缓存似乎没有正常工作,虽然据我所知,我已经做好了一切。

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 )

1 个答案:

答案 0 :(得分:4)

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

中明确说明