【发布时间】:2012-05-24 18:10:48
【问题描述】:
我有一个 Rails 应用程序,用户可以将照片上传到该应用程序。照片上传到 Amazon S3 存储桶。我有一个“贡献者”,他有很多“列表”,其中一个“列表”有很多“图像”。我希望它将所有图像上传到这种类型的目录:
:contributor_id/:listing_id/IMAGES_HERE.jpg
我也希望这样,如果贡献者创建另一个列表,它不会为该贡献者创建一个全新的文件夹。我希望它使用贡献者 ID 将其上传到已创建的文件夹中。
对如何实现这一目标有任何想法吗?这是我当前的 :path 的样子
has_attached_file :asset,
:styles => {:large => "640x480", :medium => "300x300", :thumb => "100x100" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:contributor_id/:id/:filename"
回答:
非常感谢您的回答。以下是我使用 Paperclip 的插值功能的方法。
Paperclip.interpolates('contributor_id') do |attachment, style|
attachment.instance.listing.contributor_id
end
Paperclip.interpolates('listing_name') do |attachment, style|
attachment.instance.listing.title.parameterize
end
然后是我的路径..
:path => "/:contributor_id/:listing_name/:filename"
【问题讨论】:
-
你设置好 s3.yml 了吗?
-
是的,此文件已正确设置。我没有问题让上传工作。我只是在寻找如何自定义他们上传到的上传目录结构,以及如何不根据贡献者 ID 创建重复的文件夹名称。
标签: ruby-on-rails ruby amazon-s3 paperclip