Rspec / FactoryGirl:工厂中的更改未保存在测试数据库中?

时间:2016-04-27 00:05:52

标签: ruby-on-rails ruby-on-rails-4 rspec factory-bot

我为模型定义了以下工厂:

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

after create block似乎运行文件,并且工厂返回带有正确/新更改的模型对象,但这不会在我的测试数据库中保留。

即。如果我从我的测试中调用Page.last.post.user.id,我仍然会获得在创建块之前的早期分配给post对象工厂的旧用户ID。我不确定为什么会这样。

1 个答案:

答案 0 :(得分:2)

您的after :create回调应该真正更新post对象,但是,您在save!对象上调用了page

尝试致电model.post.save!直接在user_id上保存post列。