Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 工厂女孩如何使用为孩子声明的特征创建HABTM关联?_Ruby On Rails_Testing_Factory Bot - Fatal编程技术网

Ruby on rails 工厂女孩如何使用为孩子声明的特征创建HABTM关联?

Ruby on rails 工厂女孩如何使用为孩子声明的特征创建HABTM关联?,ruby-on-rails,testing,factory-bot,Ruby On Rails,Testing,Factory Bot,如何利用工厂女孩和为孩子声明的特征建立HABTM关系 这基本上就是我要做的: factory :site do name 'some domain name' trait :rejected do rejected true end trait :processing do processing true end end factory :user do trait :bob do name 'Bob' after(:create)

如何利用工厂女孩和为孩子声明的特征建立HABTM关系

这基本上就是我要做的:

factory :site do
  name 'some domain name'

  trait :rejected do
    rejected true
  end

  trait :processing do
    processing true
  end
end

factory :user do
  trait :bob do
    name 'Bob'

    after(:create) do |user, evaluator|
      create_list(:rejected, 1, users: [user])
      create_list(:processing, 1, users: [user])
    end
  end
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :sites
end
工厂:现场操作
名称“某个域名”
特点:拒绝做
拒绝真实
结束
特点:处理能力强
处理真实
结束
结束
工厂:用户做什么
特点:鲍勃
叫‘鲍勃’
在(:create)do | user之后,求值器|
创建_列表(:拒绝,1,用户:[用户])
创建_列表(:正在处理,1,用户:[用户])
结束
结束
结束
类用户
我一直在寻找像上面这样的例子,但到目前为止,我发现的所有东西都只有父工厂的特性,并且只使用子工厂。当我试图引用子特征时,我得到一个
工厂未注册的
错误


此外,名单不会改变。我不需要这是动态的。我知道我想给每个用户提供哪些站点。

我认为问题在于您没有在创建列表调用中指定您的工厂(
:site

尝试:

或者只是:

after(:create) do |user, evaluator|
  user.sites << build(:site, :rejected)
  user.sites << build(:site, :processing)
end
after(:create)do |用户、评估者|

user.sites我认为问题在于您没有在创建列表调用中指定您的工厂(
:site

尝试:

或者只是:

after(:create) do |user, evaluator|
  user.sites << build(:site, :rejected)
  user.sites << build(:site, :processing)
end
after(:create)do |用户、评估者|

user.sites是的,你忘了提到工厂名称,答案如下:)是的,你忘了提到工厂名称,答案如下:)