如何使用factory_girl使用为子项声明的特征创建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
我一直在寻找上面的例子,但到目前为止我发现的所有内容只在父母中有特征并且只使用子工厂。当我尝试引用子特征时,我收到Factory not registered
错误。
此外,该列表不会改变。我不需要这是动态的。我知道我想给每个用户提供哪些网站。
答案 0 :(得分:0)
我认为问题是您没有在创建列表调用中指定工厂(:site
)
尝试:
after(:create) do |user, evaluator|
create_list(:site, :rejected, 1, users: [user])
create_list(:site, :processing, 1, users: [user])
end
或者只是:
after(:create) do |user, evaluator|
user.sites << build(:site, :rejected)
user.sites << build(:site, :processing)
end