我正在使用shrine gem通过Ruby on Rails在S3中存储图像。
我如何使神社表现如下?
.push
也就是说,一旦我在S3中上传图片,它们就永远不会被用户的操作删除。
我发现了类似的question,但我想意识到的是完全相反的情况。
目前的情况是这样的。
我按照神社S3 docs将神社装在ImageUploader上。
上载文件时,它们存储在S3中。 当我尝试从数据库中删除文件时,它们也会从S3中删除。
这是将文件上传到S3并从S3删除的代码块。
1. When uploading files from Frontend,they are stored in S3.
2. When deleting files from Frontend,they are deleted from Database,"but not deleted from S3"
config/initializers/shrine.rb
在require "shrine"
require "shrine/storage/file_system"
require "shrine/storage/s3"
s3_options = {
access_key_id: ENV[accESS_KEY_ID],secret_access_key: ENV[SECRET_accESS_KEY],region: ENV[REGION],bucket: ENV[BUCKET],}
Shrine.storages = {
cache: Shrine::Storage::S3.new(prefix: ...,**s3_options),store: Shrine::Storage::S3.new(prefix: ...,}
Shrine.plugin :activerecord
Shrine.plugin :cached_attachment_data
Shrine.plugin :restore_cached_data
Shrine.plugin :url_options,cache: { public: true,host: ENV[CLOUDFRONT_URL] },store: { public: true,host: ENV[CLOUDFRONT_URL] }
上,设置调整大小逻辑。在ImageUploader < Shrine
模型上,像Photo
从数据库中删除文件时,我像这样使用activeRecord。(这时,它们也已从S3中删除)
include ImageUploader::Attachment(:image)