gpt4 book ai didi

ruby-on-rails - Rails Active Storage & AWS S3 : How to attach image to model through seeds. rb 然后将其存储在 S3 私有(private)存储桶中?

转载 作者:行者123 更新时间:2023-12-04 08:57:57 27 4
gpt4 key购买 nike

对于一个学校项目,我正在开发一个“销售”小猫照片的 Rails 应用程序。我在网上挑选了 10 张猫的照片,它们目前在我的电脑上。我正在为数据库使用 Postgresql。我有一个代表小猫照片的类/模型 Item

我正在寻找一种方法,当通过 seeds.rb 循环生成假数据时,将小猫照片附加到每个 Item 类/模型,这然后将存储到已创建的 AWS S3 存储桶(称为 catz-temple)。我在 .env 文件上有两个访问和 secret S3 key ,我已经像这样修改了我的 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 的 gem,但我就是找不到关于这个主题的方法。

目前,我只是将我的存储桶公开访问并获取每个存储桶照片的 url,但是没有 API 和安全方法...

谢谢大家

最佳答案

首先按照 configuring ActiveStorage and S3 的指南进行操作.然后在您的模型上设置附件。

class Kitteh < ApplicationRecord
has_one_attached :photo
end

使用 ActiveStorage,您可以 directly attach files to records通过传递一个 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 条记录,并将其上传到您配置的存储空间。

关于ruby-on-rails - Rails Active Storage & AWS S3 : How to attach image to model through seeds. rb 然后将其存储在 S3 私有(private)存储桶中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63710499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com