我有一个category
模型。我正在使用祖先gem来使它像树结构,以便我们可以有子类别。我有一个category
的简单工厂,看起来像这样
factory :category do
sequence(:name) { |n| "Category #{n}"}
end
我有另一个模型business
,其中包含main_category
和sub_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
我对类别名称进行了唯一性验证。
任何人都有这种递归工厂问题的帮助。
由于
答案 0 :(得分:0)
得到了解决,由于一些神秘的原因,我不明白我的测试数据库已经有一个名称为Category1的类别的单个条目创建了问题,使用mysql控制台手动删除该行并且现在正在进行工作。
我仍然想知道为什么数据库不清楚,因为我从来没有写过直接测试数据库它的测试用例..:S