我的生产和开发数据库有些同步,因此开发可以从生产路径中读取图像(S3)。
问题是当我在开发时删除,更新或创建记录时,它会影响S3图像。
我不希望这种行为在开发时发生,但它应该在生产中发生。
是否可以选择将回形针转换为只读模式?我仍然希望看到S3中的图像(而不是404图像)。
我看到:preserve_files
选项可以保护删除。是否有保护覆盖/禁用上传的选项?
答案 0 :(得分:1)
对于未来的版本来说,不完整,丑陋且不安全,但同时也能完成这项任务。
config/initializers/paperclip.rb
if Rails.env.development?
module Paperclip
class Attachment
def assign uploaded_file
end
def save
end
def clear(*)
end
def destroy
end
private
def post_process(*)
end
def post_process_styles(*)
end
def post_process_style(*)
end
def queue_some_for_delete(*)
end
def queue_all_for_delete
end
def after_flush_writes
end
end
end
end
答案 1 :(得分:0)
假设您需要在开发中使用生产数据,我认为创建一个用户只能读取某些 S3 资源的“用户策略”会更有意义。然后相应地更改您的环境变量 https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html
然后,您可以处理开发中的错误(如果您尝试使用只读权限进行更新,S3 客户端应该会失败)。这可确保您无法触摸生产中的任何东西
例如(伪代码),
if Rails.env.development?
// do not update
else
Model.attachment.assign()
end