Railsアプリでペーパークリップを使用し、添付ファイルをS3に保存することはかなりよく知っています。
ただし、次のプロジェクトでは、各ユーザーに自分のS3アカウントを使用してもらいたいと思います。restful_authenticationまたはauthlogicを使用しているとすると、各ユーザーのクレデンシャルを保存してPaperclipに使用させるための最良の方法は何でしょうか。
Railsアプリでペーパークリップを使用し、添付ファイルをS3に保存することはかなりよく知っています。
ただし、次のプロジェクトでは、各ユーザーに自分のS3アカウントを使用してもらいたいと思います。restful_authenticationまたはauthlogicを使用しているとすると、各ユーザーのクレデンシャルを保存してPaperclipに使用させるための最良の方法は何でしょうか。
同じ問題が発生したため、Paperclipを拡張して複数のS3アカウントを許可する基本的なプラグインを作成しました。ハッシュやファイルだけでなく、s3_credentialsオプションのProcを渡すことができます。Procはハッシュまたはファイルを返す必要があります。
https://github.com/leklund/paperclip_multiple_s3_accounts
parse_credentialsに1行追加するだけです。
creds = creds.is_a?(Proc)?creds.call(self):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)
S3 アカウントを 1 つだけ使用して、ユーザーごとにフォルダー (バケット) を作成してみませんか。