0

我有一个 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.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"
4

1 回答 1

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 的自定义插值的更多信息

于 2012-05-17T15:36:45.773 回答