1

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 は正しくカウントされますが、インスタンスは更新されません。

設定が間違っていますか?なぜこれはこのように振る舞うのですか?

どうもありがとう!

4

1 に答える 1