与FactoryGirl的递归关联

时间:2012-05-20 20:17:13

标签: ruby-on-rails ruby-on-rails-3 activerecord factory-bot

我有一个category模型。我正在使用祖先gem来使它像树结构,以便我们可以有子类别。我有一个category的简单工厂,看起来像这样

factory :category do
  sequence(:name) { |n| "Category #{n}"}
end

我有另一个模型business,其中包含main_categorysub_category。这是我的工厂

factory :business do
  sequence(:name) { |n| "businnes#{n}"}
  sequence(:email) { |n| "busixy#{n}@example.com"}
  sequence(:website) { |n| "www.example#{n}.com"}
  association(:main_sub_category)
  main_category          {Business.main_sub_category.parent}

end

我在这里要做的是分配main_sub_category business个新类别sub_category并将category的父级分配给{ {1}}业务。

为此,我创建了一个名为sub_category的新工厂     工厂:类别做       sequence(:name){| n | “类别#{n}”}       factory:子类别do | sub |         次级工厂:类别       结束     端

当我尝试上面的代码时,我收到此错误

main_category

我尝试了另一种方法来做到这一点

Factory already registered: category (FactoryGirl::DuplicateDefinitionError)

这种方式可行,但是当我使用工厂

创建业务对象时
 factory :category do
      sequence(:name) { |n| "Category #{n}"}
      factory :subcategory do |sub|
        sub.parent {FactoryGirl.create(:category)}
      end
    end

它给我验证错误

@business = FactoryGirl.create :business

我对类别名称进行了唯一性验证。

任何人都有这种递归工厂问题的帮助。

由于

1 个答案:

答案 0 :(得分:0)

得到了解决,由于一些神秘的原因,我不明白我的测试数据库已经有一个名称为Category1的类别的单个条目创建了问题,使用mysql控制台手动删除该行并且现在正在进行工作。

我仍然想知道为什么数据库不清楚,因为我从来没有写过直接测试数据库它的测试用例..:S