如何使用Paperclip和Rails的多个S3帐户

时间:2009-12-10 19:45:11

标签: ruby-on-rails amazon-s3 paperclip

我非常熟悉在我的Rails应用程序中使用Paperclip并在S3上存储附件。

但是,在我的下一个项目中,我希望每个用户都使用自己的S3帐户。假设我正在使用restful_authentication或authlogic,那么存储每个用户凭据并让Paperclip使用它们的最佳方法是什么?

2 个答案:

答案 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)