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)