ActiveStorage 与 FactoryBot 生成 ActiveRecord::RecordNotUnique

问题描述 投票:0回答:0

在带有 Rspec 和 FactoryBot 的 Rails 6 应用程序中,我有以下工厂。

FactoryBot.define do
  factory :attachment do
    ...

    transient do
      revisions { 1 }
    end

    transient do
      file_name { Faker::File.file_name }
    end

    after(:build) do |attachment, evaluator|
      evaluator.revisions.times do
        attachment.files.attach(io: StringIO.new,
                                filename: File.basename("#{evaluator.file_name}.pdf"),
                                content_type: 'application/pdf')


      end
    end

    ...  

  end
end

以下代码按预期工作。

context '...' do
  let(:attachment) { create(:attachment, revisions: 2) }

  it '...' do
   ...
  end
end

并生成

#, #, #]>

但是,当我添加一个(或多个)额外的修订

create(:attachment, revisions: 3)
,我得到

ActiveRecord::RecordNotUnique: Mysql2 ::错误:键'index_active_storage_attachments_uniqueness'的重复条目'Attachment-332-files-471'

我在这里遗漏了什么吗?

ruby-on-rails factory-bot rails-activestorage
© www.soinside.com 2019 - 2024. All rights reserved.