2009-12-10 56 views
4

我对在我的Rails应用程序中使用Paperclip并在S3上存储附件非常熟悉。如何在Paperclip和Rails中使用多个S3帐户

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

回答

1

为什么不使用一个S3帐户并为每个用户创建一个文件夹(桶)。

+0

因为,在这个项目中,每一位用户负责的拥有S3账单,即使他们不再使用该服务,也需要访问他们的文件。 – Callmeed 2009-12-10 22:18:23

1

我有同样的问题,所以我写了一个基本的插件,将扩展回形针允许多个S3帐户。它可以让你为s3_credentials选项传递一个Proc,而不仅仅是一个散列或文件。 Proc必须返回一个散列或文件。

https://github.com/leklund/paperclip_multiple_s3_accounts

它所做的是添加一个行到parse_credentials:

creds = creds.is_a(PROC)? creds.call(个体经营):creds

,然后你可以这样做(只要你的模型belongs_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) 
+0

谢谢!这是我需要的! – Mischa 2011-06-25 08:18:24