我非常熟悉在我的Rails应用程序中使用Paperclip并在S3上存储附件。
但是,在我的下一个项目中,我希望每个用户都使用自己的S3帐户。假设我正在使用restful_authentication或authlogic,那么存储每个用户凭据并让Paperclip使用它们的最佳方法是什么?
答案 0 :(得分:1)
为什么不使用一个S3帐户并为每个用户创建一个文件夹(存储桶)。
答案 1 :(得分:1)
我遇到了同样的问题,所以我编写了一个基本的插件,它将扩展Paperclip以允许多个S3帐户。它允许您为s3_credentials选项传递Proc,而不仅仅是散列或文件。 Proc必须返回哈希或文件。
https://github.com/leklund/paperclip_multiple_s3_accounts
所有这一切都是为parse_credentials添加一行:
creds = creds.is_a?(Proc)? creds.call(self):creds
然后你可以做类似的事情(只要你的模型属于: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)