【问题标题】:Duplicate entry for index with FactoryGirl when running tests运行测试时使用 FactoryGirl 重复索引条目
【发布时间】:2011-08-21 00:33:33
【问题描述】:

我正在使用 FactoryGirl 创建一个“专业”模型,该模型在 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。

【问题讨论】:

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


    【解决方案1】:

    为您的工厂添加序列:

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

    在您的专业工厂使用以下顺序:

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

    这样你总是会有新的代码。

    【讨论】:

    • 我有一定数量的专业。很可能不会再向数据库添加更多内容。我应该把这些东西放在seeds.rb 中吗?如果是这样,我将如何使用工厂女孩来关联独特的专业以防止相同的 mysql 错误?
    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多