Ruby on rails 具有嵌套属性的Factory Girl错误&;轨道5

Ruby on rails 具有嵌套属性的Factory Girl错误&;轨道5,ruby-on-rails,rspec,ruby-on-rails-5,factory-bot,Ruby On Rails,Rspec,Ruby On Rails 5,Factory Bot,我有一个公司模型,该模型有许多用户,属于公司。我在公司模型中还有一个回调函数,它调用了我希望避免的外部服务。我试着给FactoryGirl安装一个过梁,但它总是抛出错误 以下是控制器的外观: class CompanyController < ApplicationController ... def new @company = Company.new @user = @company.users.build end def create @c

我有一个
公司
模型,该模型有许多
用户
属于
公司
。我在
公司
模型中还有一个回调函数,它调用了我希望避免的外部服务。我试着给FactoryGirl安装一个过梁,但它总是抛出错误

以下是控制器的外观:

class CompanyController < ApplicationController
  ...

  def new
    @company = Company.new
    @user = @company.users.build
  end

  def create
    @company = Company.new(company_params)
    @user = @company.users.first
    ...
  end

  ...
end
问题是,我得到一个错误,说用户必须存在一个
公司,因为
属于
,这是必需的,而公司说
未定义的方法user=
是错误的,因为我试图构建多个用户。我还尝试了许多其他的变体,最终没有跳过回调(比如在用户工厂中创建公司)

我希望有人知道如何以与这种类型的控制器设置兼容的方式构建工厂,或者如果有其他方式,我应该构建没有嵌套属性的控制器


提前感谢您的帮助

我只是想添加一条评论,但我没有足够的声誉

您没有显示您的模型和db表,但我假设您的
用户
表有一个
公司id
字段,
公司
模型有一行
有许多:用户

这就是我在这种情况下使用factory girl的方式:

用户工厂:

  factory :user do
    email Faker::Internet.email
    password "password"
    password_confirmation "password"
    company
  end
公司工厂:

 factory :company do
    name Faker::Company.name
 end
然后在测试中,您希望创建多个用户,对吗

company = create(:company)
number_of_users = 5
create_list(:user, number_of_users, company: company)
这样,您创建的所有用户都将关联到同一家公司

company = create(:company)
number_of_users = 5
create_list(:user, number_of_users, company: company)