ActiveRecord计数器_缓存增加db,但不增加实例

ActiveRecord计数器_缓存增加db,但不增加实例,activerecord,ruby-on-rails-3.2,rspec2,ruby-1.9.3,counter-cache,Activerecord,Ruby On Rails 3.2,Rspec2,Ruby 1.9.3,Counter Cache,我有两个简单的类Company和Votings,我用rspec测试它们 当我向一家公司添加投票时,它将通过activeRecord进行计数 class Company < ActiveRecord::Base attr_accessible :name, :votings_count has_many :votings, :dependent => :destroy end 该列不是零。默认值=0 add_column :companies, :votings_count,

我有两个简单的类Company和Votings,我用rspec测试它们

当我向一家公司添加投票时,它将通过activeRecord进行计数

class Company < ActiveRecord::Base
  attr_accessible :name, :votings_count
  has_many :votings, :dependent => :destroy
end
该列不是零。默认值=0

add_column :companies, :votings_count, :integer, default: 0
我遵循了ryans counter_cache cast的示例->

数据库计数正确,但实例未更新

我有错误的设置吗? 为什么会这样


非常感谢

您需要重新加载实例以反映数据库中的更改

# ...
c.save
c.votings.create(Fabricate.attributes_for :voting)
# Add this line
c.reload
c.votings_count.should == 1

不,这不酷!因为reload会对db进行不必要的查询。它应该在关联实例中自动更新。
add_column :companies, :votings_count, :integer, default: 0
# ...
c.save
c.votings.create(Fabricate.attributes_for :voting)
# Add this line
c.reload
c.votings_count.should == 1