У меня есть два простых класса Company
и Votings
, которые я тестирую с помощью rspec.ActiveRecord counter_cache увеличивает db, но не экземпляр
Когда я добавить голосование в компанию он получает подсчитывались с помощью ActiveRecord
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 ==)
колонка не ноль. По умолчанию = 0
add_column :companies, :votings_count, :integer, default: 0
Я последовал пример из Ryans counter_cache гипса ->http://railscasts.com/episodes/23-counter-cache-column?view=asciicast
БД считается правильно, но экземпляр не обновляется.
У меня неправильная установка? Почему так ведут себя?
большое спасибо!
wow прохладный. Спасибо! – Jan
Нет, это не круто! Поскольку перезагрузка делает запрос к db (что необязательно). Он должен автоматически обновляться в соответствующем экземпляре. – pablo