我正在寻找一种创建递归工厂的舒适方法。在我的应用程序中,用户有很多软件,我想用 n 个相关软件“一次性”创建一个用户。这是我的代码:
FactoryGirl.define do
factory :user do |f|
f.sequence(:username) { |n| "user#{n}" }
end
trait :with_software do
ignore do
n 3
end
after :create do |user, evaluator|
FactoryGirl.create_list :software, evaluator.n, :user => user
end
而软件定义如下
factory :software do |f|
f.sequence(:name) { |n| "software#{n}" }
f.association :user
end
当我数字:
user1 = FactoryGirl.create(:user, :with_software)
FactoryGirls 创建一个具有 3 个相关软件条目的用户。问题是软件名称总是“software#{n}”。如何将唯一的软件名称指定为 :user.name + "software#{n}" ?