Повторяющаяся запись для индекса с FactoryGirl при запуске тестов

Я использую FactoryGirl для создания специальной модели с уникальным индексом в столбце code.

Когда я создаю несколько фабрик по модели "Speciality", я получаю такую ​​ошибку:

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.


person maletor    schedule 21.08.2011    source источник


Ответы (1)


Добавьте последовательность для ваших фабрик:

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

А на вашем специализированном заводе используйте последовательность:

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

Таким образом, у вас всегда будут новые коды.

person Maurício Linhares    schedule 21.08.2011
comment
У меня есть определенное количество специальностей. Вполне вероятно, что больше в базу добавляться не будет. Должен ли я помещать материал в файл seed.rb? Если да, то как мне использовать фабричную девушку, чтобы связать уникальные особенности, чтобы предотвратить ту же ошибку mysql? - person maletor; 21.08.2011