Прикрепите изображения в файле seed.rb в рельсы, используя активное хранилище - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть класс транспортных средств, к которому может быть прикреплено изображение. Я сделал изображение по умолчанию, которое будет отображаться, если в файле vehicle.rb не было загружено ни одного другого изображения.

Я хотел бы включить изображения в файл seed.rb, чтобы не загружать все изображения вручную. Это возможно?

Помощь очень ценится, спасибо.

Вот мой автомобиль.rb:

class Vehicle < ApplicationRecord
  belongs_to :make
  belongs_to :model
  accepts_nested_attributes_for :make
  accepts_nested_attributes_for :model
  has_one_attached :image

  after_commit :add_default_image, on: %i[create update]

  def add_default_image
    unless image.attached?
      image.attach(
        io: File.open(Rails.root.join('app', 'assets', 'images', 'no_image_available.jpg')),
        filename: 'no_image_available.jpg', content_type: 'image/jpg'
      )
    end
  end
end

Вот как я создаю записи в моем начальном файле, но я хотел бы также включить изображения:

v = Vehicle.create(
  vin: '1QJGY54INDG38946',
  color: 'grey',
  make_id: m.id,
  model_id: mo.id,
  wholesale_price: '40,000'
)

1 Ответ

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

Вы можете использовать гем Ffaker , чтобы легко генерировать поддельные данные, и, наконец, после создания записи транспортного средства вы можете обновить атрибут изображения вашей записи из переменной экземпляра. Проверьте Вложение файлов / объектов ввода-вывода

Это будет код db/seed.rb файла:

if Vehicle.count.zero?
  10.times do
    v = Vehicle.create(
      vin: FFaker::Code.ean,
      color: FFaker::Color.name,
      maker_id: m.id,
      model_id: m.id,
      wholesale_price: '40,000'
    )
    v.image.attach(io: File.open('/path/to/file'), filename: 'file.jpg')
  end
end

Не забудьте добавить гем ffaker в файл Gemfile.

...