首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails活动存储& AWS S3 :如何通过seeds.rb将映像附加到模型中,然后将其存储在S3专用桶中?

Rails活动存储& AWS S3 :如何通过seeds.rb将映像附加到模型中,然后将其存储在S3专用桶中?
EN

Stack Overflow用户
提问于 2020-09-02 17:15:01
回答 1查看 1.1K关注 0票数 3

在学校的一个项目中,我正在开发一个Rails应用程序,它“卖”小猫的照片。我在网上选了10张猫的照片,它们现在在我的电脑上。我正在为DB使用Postgresql。我有一个类/模型Item,它代表小猫的照片。

我正在寻找一种方法,在通过seeds.rb循环生成假数据时,将一张小猫照片附加到每个Item类/模型上,然后将其存储到已经创建的AWS S3桶中(称为catz-坦普尔)。我在一个S3文件上有我的两个访问和秘密.env密钥,我已经修改了我的storage.yml文件如下:

代码语言:javascript
复制
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和安全的方法在这个.

谢谢大家

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-03 09:01:17

配置ActiveStorage和S3的指南开始。然后在模型上设置附件。

代码语言:javascript
复制
class Kitteh < ApplicationRecord
  has_one_attached :photo
end

使用ActiveStorage,您可以通过传递一个IO对象来直接将文件附加到记录

代码语言:javascript
复制
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个记录,并将其上载到已配置的存储中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63710499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档