尝试在ActiveStorage上播种映像时出现重复的条目

时间:2019-05-15 11:23:34

标签: ruby-on-rails ruby

我是Ruby on Rails生态系统的新手,所以可能提出的问题可能微不足道。

我已经在一个模型上设置了活动存储

class Sedcard < ApplicationRecord
  has_many_attached :photos
end

我只想像这样用Faker播种数据:

require 'faker'

Sedcard.destroy_all
20.times do |_i|
  sedcard = Sedcard.create!(
    showname: Faker::Name.female_first_name,
    description: Faker::Lorem.paragraph(10),
    phone: Faker::PhoneNumber.cell_phone,
    birthdate: Faker::Date.birthday(18, 40),
    gender: Sedcard.genders[:female],
    is_active: Faker::Boolean.boolean
  )

  index = Faker::Number.unique.between(1, 99)
  image = open("https://randomuser.me/api/portraits/women/#{index}.jpg")
  sedcard.photos.attach(io: image, filename: "avatar#{index}.jpg", content_type: 'image/png')
end

问题在于,其中一些记录最终附有多张照片,可能是5张或10张。

大多数记录播种得很好,它们只关联一张照片,但是包含多张照片的记录都遵循相同的模式,并且都以完全相同的图像播种。

2 个答案:

答案 0 :(得分:1)

我自己发现了问题。

我使用UUID作为模型的主键,该主键与ActiveStorage本机不兼容。因此,我或多或少遵循了here

的说明

答案 1 :(得分:0)

您需要清除附件。

在删除Sedcard之前尝试添加此代码段

Sedcard.all.each{ |s| s.photos.purge }

参考:https://edgeguides.rubyonrails.org/active_storage_overview.html#removing-files