ActiveRecord计数器_缓存增加db,但不增加实例
我有两个简单的类Company和Votings,我用rspec测试它们 当我向一家公司添加投票时,它将通过activeRecord进行计数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,
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