2011-08-21 38 views
5

我正在使用FactoryGirl在code列中創建一個具有唯一索引的「專業」模型。運行測試時使用FactoryGirl索引的重複條目

當我創建「特色」模型的多個工廠我得到這個錯誤:

Failure/Error: Factory(:specialty) 
Mysql::Error: Duplicate entry 'AN00' for key 'index_specialties_on_code': INSERT INTO `specialties` (`code`, `name`) VALUES ('AN00', 'Name') 
Duplicate entry 'AN00' for key 'index_specialties_on_code' 

什麼是解決這個問題的正確方法?與模型相關的索引怎麼沒有被模型所取代。我正在使用DatabaseCleaner。

回答

3

添加順序爲您的工廠:

Factory.sequence :code do |n| 
    "AAA#{n}" 
end 

而在你的專業廠家使用的順序:

Factory.define :specialty do |f| 
    f.code { Factory.next(:code) } 
    # other assignments here 
end 

這樣,你將永遠有新的代碼。

+0

我有一定數量的專業。這很可能不會再向數據庫添加更多內容。我應該把東西放在seeds.rb中嗎?如果是這樣,那麼我將如何使用工廠女孩關聯獨特的特色,以防止相同的mysql錯誤? – maletor

相關問題