2 つの単純なクラスがCompany
ありVotings
、rspec でテストします。
会社に投票を追加すると、アクティブレコードによってカウントされます
class Company < ActiveRecord::Base
attr_accessible :name, :votings_count
has_many :votings, :dependent => :destroy
end
そしてこの投票クラス:
class Voting < ActiveRecord::Base
attr_accessible :percent, :company, :company_id
belongs_to :company, counter_cache: true
end
そしてこの単純なrspec
require 'spec_helper'
describe Company do
it "should count the votings in a table" do
c = Company.new(Fabricate.attributes_for :company)
c.save
c.votings.create(Fabricate.attributes_for :voting)
c.votings_count.should == 1
end
end
#expected: 1
#got: 0 (using ==)
列は nil ではありません。デフォルト = 0
add_column :companies, :votings_count, :integer, default: 0
ryans counter_cache キャストの例に従いました -> http://railscasts.com/episodes/23-counter-cache-column?view=asciicast
DB は正しくカウントされますが、インスタンスは更新されません。
設定が間違っていますか?なぜこれはこのように振る舞うのですか?
どうもありがとう!