2011-08-21 13 views
5

Sto utilizzando FactoryGirl per creare un modello "Specialità" che ha un indice univoco sulla colonna code.Duplica la voce per l'indice con FactoryGirl quando si eseguono i test

Quando creo più fabbriche del modello di "specialità" ottengo questo errore:

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' 

Qual è il modo giusto per affrontare questo? Come mai l'indice associato al modello non viene spazzato via con il modello. Sto usando DatabaseCleaner.

risposta

3

aggiungere una sequenza per le fabbriche:

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

E a vostra fabbrica di specialità utilizzare la sequenza:

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

In questo modo si avrà sempre nuovi codici.

+0

Ho un certo numero di specialità. È abbastanza probabile che non verranno aggiunti altri al database. Devo mettere la roba in un seeds.rb? Se è così allora come userò factory girl per associare specialità uniche per prevenire lo stesso errore mysql? – maletor

Problemi correlati