工厂女孩has_one协会制造混乱



我有以下两个模型:

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) },除非您想指定构建策略或更改类别属性。有关女工协会的更多信息,请阅读这篇文章。

最新更新