Ruby on rails FactoryGirl丢失属于内置模型。在创建之前

Ruby on rails FactoryGirl丢失属于内置模型。在创建之前,ruby-on-rails,activerecord,rspec,factory-bot,before-save,Ruby On Rails,Activerecord,Rspec,Factory Bot,Before Save,鉴于这种模式: class User < ActiveRecord::Base belongs_to :user_profile before_create { build_user_profile } end 当我这样做时: @user = FactoryGirl.create(:user) FactoryGirl失去了@user.user\u profile关联(它是nil),我必须调用@user.reload 这在一定程度上减慢了我的测试速度,因为大多数测试都需要登录

鉴于这种模式:

class User < ActiveRecord::Base
  belongs_to :user_profile  
  before_create { build_user_profile }
end
当我这样做时:

@user = FactoryGirl.create(:user)
FactoryGirl
失去了
@user.user\u profile
关联(它是
nil
),我必须调用
@user.reload

这在一定程度上减慢了我的测试速度,因为大多数测试都需要登录用户。我已尝试让工厂(重新)在(:build/:create)之前/之后的
中创建关联,但没有成功

如何让FactoryGirl在挂钩前后尊重ActiveRecord

编辑:
重新加载
实际上是不够的,我必须这样做:

FactoryGirl.define do
  factory :user do
    after(:create) do |user|
      user.create_user_profile
      user.save
    end
  end
end

只要
用户
模型在创建{build\u User\u profile}
之前有
依赖于
新建
保存,使用
FactoryGirl
自己的
关联
方法就不起作用
创建模型实例,因此它不会调用
create
方法,因此也不会调用
create
钩子。您必须重构模型中关联的创建或调整工厂,以确保关联的创建。

FactoryGirls关联方法应该可以工作,您能解释一下使用关联方法的问题吗?我无法解释。我想不出来。如果我在创建之前从模型中删除
,FactoryGirl的关联方法将按预期工作。使用中的
before\u create
User
s由
FactoryGirl
创建,无论我是否添加FactoryGirl关联方法,都不会获得
User\u profile
create\u User\u profile
将在
用户
无效时导致孤立记录,在实际的应用程序中,或者如果我编写了一个不使用FactoryGirl的规范,那么一切都会按照预期工作。
FactoryGirl.define do
  factory :user do
    after(:create) do |user|
      user.create_user_profile
      user.save
    end
  end
end