我有一个用户可以上传照片的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"
答案 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
的更多信息