我非常熟悉在我的 Rails 应用程序中使用 Paperclip 并将附件存储在 S3 上。
但是,在我的下一个项目中,我希望每个用户都使用自己的 S3 帐户。假设我使用的是 restful_authentication 或 authlogic,那么存储每个用户的凭据并让 Paperclip 使用它们的最佳方式是什么?
我非常熟悉在我的 Rails 应用程序中使用 Paperclip 并将附件存储在 S3 上。
但是,在我的下一个项目中,我希望每个用户都使用自己的 S3 帐户。假设我使用的是 restful_authentication 或 authlogic,那么存储每个用户的凭据并让 Paperclip 使用它们的最佳方式是什么?
我有同样的问题,所以我写了一个基本的插件,它将扩展 Paperclip 以允许多个 S3 帐户。它允许您为 s3_credentials 选项传递 Proc,而不仅仅是散列或文件。Proc 必须返回一个哈希值或一个文件。
https://github.com/leklund/paperclip_multiple_s3_accounts
它所做的只是在 parse_credentials 中添加一行:
creds = creds.is_a?(Proc) ? creds.call(self) : 信用
然后你可以做类似的事情(只要你的模型属于_to:s3bucket):
has_attached_file :s3_credentials => (lambda do |attachment|
h = {
'bucket' => attachment.instance.s3bucket.name,
'access_key_id' => attachment.instance.s3bucket.access_key_id,
'secret_access_key' => attachment.instance.s3bucket.secret_access_key
}
end)
为什么不只使用一个 S3 帐户并为每个用户创建一个文件夹(存储桶)。