Активное хранение семян Рельсы - PullRequest
0 голосов
/ 29 апреля 2018

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

Это моё Семя.

User.create(email: "test@ok.com", password: "okokok") if User.count.zero?

50.times do |i|
  temp = Template.create(
    title: Faker::Name.name,
    description: Faker::Lorem.paragraph(2),
    user: User.first,
    github_link: Faker::SiliconValley.url,
    category: rand(0...4)
  )
  puts Template.first.photo
  temp.photo.attach(Template.first.photo)
end

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Он также находится в руководстве по документации через пару дней:

http://edgeguides.rubyonrails.org/active_storage_overview.html#attaching-file-io-objects

Иногда вам нужно прикрепить файл, который не приходит через HTTP запрос. Например, вы можете прикрепить файл, который вы создали на диск или загружен с пользовательского URL. Вы также можете захотеть прикрепить файл прибора в тесте модели. Чтобы сделать это, предоставьте хэш содержащий хотя бы открытый объект ввода-вывода и имя файла:

@message.image.attach(io: File.open('/path/to/file'), filename: 'file.pdf')

По возможности укажите также тип контента. Попытки активного хранения определить тип содержимого файла из его данных. Это возвращается к тип контента, который вы предоставляете, если он не может этого сделать.

@message.image.attach(io: File.open('/path/to/file'), filename: 'file.pdf', content_type: 'application/pdf')

Если вы не предоставили тип контента, а Active Storage не может определить тип содержимого файла автоматически, по умолчанию приложения / октет-поток.

0 голосов
/ 29 апреля 2018

Хорошо, я нашел решение, выкладываю его для парней в такой же ситуации:

temp.photo.attach(
    io: File.open('storage/3n/GG/3nGGV5K5ucYZDYSYojV8mDcr'),
    filename: 'file.png'
  )

Если у вас есть более простые решения, поделитесь им;)

...