亚马逊s3- Paperclip无法将图像上传到正确的路径

时间:2012-05-17 06:48:50

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

我有一个用户可以上传照片的rails应用。照片上传到Amazon S3存储桶。我有一个“贡献者”,他有许多“列表”,其中“列表”有很多“图像”。我希望将所有图像上传到此类目录:

:contributor_id/:listing_id/IMAGES_HERE.jpg

我也希望如果贡献者创建另一个列表,它不会为该贡献者创建整个新文件夹。我希望它将它上传到已经创建的具有贡献者ID的文件夹。

有关如何实现这一目标的任何想法?这是我当前的路径:

  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的Interpolations功能使其工作。

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"

1 个答案:

答案 0 :(得分:1)

我不确定,但通常会这样:

module Paperclip      
  module Interpolations

    def timestamp attachment, style
      attachment.instance_read(:updated_at).to_i
    end

  end
end

我认为应该是这样的:

module Paperclip      
   module Interpolations

     def contributor_id attachment, style
       attachment.instance_read(:contributor_id)
     end

   end
end

您可以阅读有关PaperClip自定义插值here

的更多信息