在学校的一个项目中,我正在开发一个Rails应用程序,它“卖”小猫的照片。我在网上选了10张猫的照片,它们现在在我的电脑上。我正在为DB使用Postgresql。我有一个类/模型Item,它代表小猫的照片。
我正在寻找一种方法,在通过seeds.rb循环生成假数据时,将一张小猫照片附加到每个Item类/模型上,然后将其存储到已经创建的AWS S3桶中(称为catz-坦普尔)。我在一个S3文件上有我的两个访问和秘密.env密钥,我已经修改了我的storage.yml文件如下:
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: eu-central-1
bucket: catz-temple我发现有一个名为aws-sdk-ruby的创业板,但我不知道在这个主题上应该采用什么方法。
现在,我只是把我的桶放在公共访问和拍摄每个桶照片的urls,但没有API和安全的方法在这个.
谢谢大家
发布于 2020-09-03 09:01:17
从配置ActiveStorage和S3的指南开始。然后在模型上设置附件。
class Kitteh < ApplicationRecord
has_one_attached :photo
end使用ActiveStorage,您可以通过传递一个IO对象来直接将文件附加到记录:
photos = Rails.root.join('path/to/the/images', '*.{jpg,gif,png}')
100.times do |n|
path = photos.sample
File.open(path) do |file|
Kitteh.new(name: "Kitteh #{n}") do |k|
k.photo.attach(
io: file,
filename: path.basename
)
end.save!
end
end此示例使用从硬盘驱动器上的目录中选择的随机图像创建100个记录,并将其上载到已配置的存储中。
https://stackoverflow.com/questions/63710499
复制相似问题