Посеять картинки профиля, сохраненные в S3 от Faker - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю над приложением Rails, и у меня есть изображение профиля has_one_attached для активного хранилища в S3, и я хотел бы получить данные из Faker для их изображений аватаров, когда я собираю своих пользователей.Вот начальный код:

20.times do
  Student.create(
      first_name: Faker::Name.first_name, 
      last_name: Faker::Name.last_name,
      phone_number: Faker::PhoneNumber.cell_phone,
      school_id: School.first.id,
      vehicle_make_model: Faker::Vehicle.make_and_model,
      vehicle_year: Faker::Vehicle.year,
      vehicle_color: Faker::Vehicle.color,
      email_address: Faker::Internet.email,
      password: "password", 
      email: Faker::Internet.email,
      profile_picture: Faker::Avatar.image
  ).save
end

Вот модель для пользователя aka Student (она настроена правильно и работает при загрузке изображений через сайт):

class Student < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  belongs_to :school, optional: true
  has_many :offers
  has_many :comments
  has_many :cars
  has_one_attached :profile_picture
end

IЯ посеял остальные данные раньше, и они отлично работают, но как только я интегрировал S3 и попытался заполнить эти данные, он больше не работает для меня.

1 Ответ

0 голосов
/ 30 ноября 2018

Попробуйте что-то вроде этого:

#seed_file
require 'open-uri'

def image_fetcher
    open(Faker::Avatar.image)
    rescue
    open("https://robohash.org/sitsequiquia.png?size=300x300&set=set1")
end

20.times do |n|
  s = Student.create(
     ...
     #remove profile_picture from here
  )

  s.profile_picture.attach({
     io: image_fetcher,
     filename: "#{n}_faker_image.jpg"
  })
end
...