Дублирующая запись для индекса с FactoryGirl при запуске тестов - PullRequest
5 голосов
/ 21 августа 2011

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

При создании нескольких фабрик модели "Specialty" я получаю эту ошибку:

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.

1 Ответ

3 голосов
/ 21 августа 2011

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

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

А на своей специализированной фабрике используйте последовательность:

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

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

...