2016-04-27 34 views
5

我有一个模型定义了以下工厂:Rspec/FactoryGirl:工厂中的更改未保存在测试数据库中?

factory :page do 
    association :user, factory: :standard_user 
    association :post, factory: [:short_post] 
    after :create do |model| 
    model.post.user = model.user 
    model.save! 
    end 
end 

在创建块之后似乎运行文件和工厂返回模型对象与正确的/新变化,然而,这并不在我的测试数据库中持久。

即。如果我在我的测试中调用Page.last.post.user.id,我仍然会获得旧的用户标识,该用户标识在after create块之前被分配给发布对象工厂。我不知道为什么会发生这种情况。

回答

2

您的after :create回调应该确实在更新post对象,但是,您在page对象上调用save!对象。

尝试拨打model.post.save!直接将user_id列保存到post