Как добавить картинку из локальной папки в ActiveStorage (RoR)?
Для прикрепления аватарки пользователя (seed.rb) в ActiveStorage (в моем случае Ruby on Rails 6.0.1) я воспользовался методом attach.
Пример из официальной документации ActiveStorage:
Пример из официальной документации ActiveStorage:
user.avatar.attach(io: File.open("/path/to/face.jpg"), filename: "face.jpg", content_type: "image/jpg")
content_type - необязательный параметр.
В моем seed.rb я сделал следующим образом:
user.avatar.attach(io: File.new(Rails.root.join('public/userpic.png')), filename: 'userpic.png')
Картинку для аватарки userpic.png мы кладем в директорию public. При помощи Rails.root.join мы узнаем и передаем полный путь к RoR-приложению, а также добавляем к нему необходимую папку и имя файла:
2.6.5 :001 > Rails.root.join => #<Pathname:/Users/user/dev/web/lilproject>
2.6.5 :002 > Rails.root.join('public/userpic.png') => #<Pathname:/Users/user/dev/web/lilproject/public/userpic.png>
В качестве имени передаем строку 'userpic.png'.
Сам скрипт seeds.rb с добавлением аватарки пользователю выглядит примерно так:
... user = User.new( email: "[email protected]", password: "password", password_confirmation: "password", ) user.avatar.attach(io: File.new(Rails.root.join('public/userpic.png')), filename: 'userpic.png') user.save! ...