我是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张。
大多数记录播种得很好,它们只关联一张照片,但是包含多张照片的记录都遵循相同的模式,并且都以完全相同的图像播种。
答案 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