我正在建立一个电子商务网站,其核心是目录模块 - 它包含大约20个类别,每个类别在5& 5之间。 30个子类别,产品然后与子类别相关联。
我想弄清楚如何创建父类别&然后至少使用FactoryGirl与同一父级关联的2个子类别。
这是我到目前为止所做的:
Factory.define :parent_category do |f|
f.name "MetalWork"
end
Factory.define :child_category do |f|
f.name "Wedling"
f.association :parent_category
f.metatitle ""
f.metadescription ""
end
我正在考虑使用序列来生成子类别名称& SEO数据,但是如果我然后使用:
生成2个child_category模型FactoryGirl.build_list(:child_category, 2)
它将创建两个单独的父类别,这不是我想要的。
至少有两个子类别非常重要,因为我们需要确保使用子类别模型保存的各种SEO数据都显示在正确的页面上。
有谁知道如何做到这一点?我知道这可能是一个非常新手的问题,感谢您的帮助!
答案 0 :(得分:1)
您可以将哈希传递给任何工厂调用以覆盖任何属性 - 也适用于build_list
调用:
parent = Factory(:category, :name => "Test Category")
FactoryGirl.build_list(:child_category, 2, :parent_category => parent)
请参阅docs。
中“构建和创建多个记录”部分中的示例答案 1 :(得分:0)
我从
开始# spec/support/factories.rb
FactoryGirl.define do
factory :parent_category do
name 'MetalWork'
end
factory :child_category do
name 'Wedling'
metatitle ''
metadescription ''
end
end
# some_controller_spec.rb
before :each do
@parent = Factory :parent_directory
(5 + rand(26)).times do
# replace :parent_id with whatever attribute
# you have to store parent category
@child = Factory :child_directory, :parent_id => @parent.id
# next you can fabricate your products with :category => @child
# ...
end
end