Повторяющиеся записи при попытке заполнить изображение на ActiveStorage - PullRequest
0 голосов
/ 15 мая 2019

Я новичок в экосистеме Ruby on Rails, поэтому вопрос может быть весьма тривиальным.

Я установил Active Storage на одну из моих моделей

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 ]

1 голос
/ 15 мая 2019

Я сам нашел проблему.

Я использовал UUID в качестве основного ключа моей модели, который изначально не совместим с ActiveStorage.Таким образом, я более или менее следовал инструкциям здесь

0 голосов
/ 15 мая 2019

Вам необходимо очистить вложения.

Попробуйте добавить этот фрагмент, прежде чем уничтожить Sedcard

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

Ссылка: https://edgeguides.rubyonrails.org/active_storage_overview.html#removing-files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...