Я продолжаю сталкиваться с той же проблемой, и я был бы удивлен, если бы я был единственным человеком, испытывающим это, и ожидал, что у кого-то есть лучший способ сделать это. Когда я создаю Фабрику, которая имеет зависимую Фабрику (ассоциацию), тогда родительская модель не обновляется с добавленной моделью. Вероятно, легче объяснить в коде.
Скажи, что у меня есть:
Factory.define :company do |a|
a.name 'Acme'
end
Factory.define :office do |a|
a.name 'London'
a.association :company, :factory => :company
end
и я выполняю этот код:
london = Factory.create(:office)
sanfran = Factory.create(:office, :name => 'San Fran' , :company = london.company)
тогда, если я выполню этот тест
london.company.offices.count.should eql(2)
это не удалось, потому что компания Acme была создана до того, как был создан Лондон или даже Сан-Франциско, и поскольку company.offices.new не использовался для создания новых моделей, модель компании никогда не обновлялась.
Единственный способ обойти эту проблему - написать тесты следующим образом:
london.company(true).offices.count.should eql(2)
, который вызывает обновление.
Однако, это действительно не идеально, чтобы делать это каждый раз в моих тестах, особенно когда код, который он тестирует, не должен полагаться на это.