ruby-on-rails - 运行测试时使用 FactoryGirl 重复索引条目

标签 ruby-on-rails ruby-on-rails-3 rspec rspec2 factory-bot

我正在使用 FactoryGirl 创建一个“专业”模型,该模型在 code 上具有唯一索引柱子。

当我创建“专业”模型的多个工厂时,我收到此错误:

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。

最佳答案

为您的工厂添加一个序列:

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

在您的专业工厂使用以下序列:
Factory.define :specialty do |f|
  f.code { Factory.next(:code) }
  # other assignments here
end

这样,您将始终拥有新代码。

关于ruby-on-rails - 运行测试时使用 FactoryGirl 重复索引条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135597/

相关文章:

mysql - Rails 中的多对多关联

ruby - RSpec 模拟对象示例

ruby - 守卫 gem 在开始时运行所有触发器

ruby-on-rails - Rspec 中的 Stub Devise 'current_user' 方法,无需加载 Rails

ruby-on-rails - 我怎样才能让 Sunspot 为我的测试环境索引灯具?

Javascript 未在 Rails View 部分中执行

ruby-on-rails - Rails 关联 : access join table by console (HABTM)

ruby-on-rails - Ruby on Rails - Base64 的外部图像 Url

ruby-on-rails-3 - form_tag 或 form_for 用于更新外部 API?轨道3.2

ruby - Rails - 一个模型有两个关联