我有以下两个模型:
category_name
Skill (has_one: category)
skill_name
skill_desc
category_id
我的困惑是,我怎么能使简单的工厂女孩对象的类别和技能?
FactoryGirl.define do
factory :category do
category_name 'Name'
end
end
FactoryGirl.define do
factory :skill do
skill_name 'Name'
skill_desc 'Desc'
category { create(:category) }
end
end
我建议查看Faker gem,以便您可以将独特的文本注入到您的模型中。这将在添加任何唯一验证后非常有用。
另外,在我看来,用表名命名前置列名是多余的。
只是为了清楚,因为你的技能表有类别外键,它被认为是"belong_to类别"在rails术语,而不是"有一个"。
实现此目的的一种方法是通过以下方式为类别和技能创建不同的工厂:
FactoryGirl.define do
factory :category do
category_name 'Name'
end
end
FactoryGirl.define do
factory :skill do
skill_name 'Name'
skill_desc 'Desc'
category
end
end
您不需要编写category { create(:category) }
,除非您想指定构建策略或更改类别属性。有关女工协会的更多信息,请阅读这篇文章。