2009-12-10 52 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