这是我的upload.rb
class Upload < ActiveRecord::Base
belongs_to :post
has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["100x100>",:jpg]},url: "/post_images/post_:postid/:style/:filename"
def postid
self.post_id
end
end
我有一个post_id列。如belongs_to
表示我将为一个帖子提供多个图像。但是在文件夹中保存文件而不是post_25
。它存储为post_:postid
但是,如果我以:id
的形式提供它,那么它正在发挥作用。
我该如何解决呢?任何人都可以帮忙解决这个问题。
答案 0 :(得分:3)
您应该使用Paperclip's interpolations来实现此功能。首先,首先在初始化程序中定义插值:
# config/initializers/interpolations.rb
Paperclip.interpolates :postid do |attachment, style|
'post_' + attachment.instance.post.id
end
然后,您可以直接在附件网址声明中使用:postid
插值(请记住首先重新启动服务器):
# app/models/upload.rb
has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["100x100>",:jpg]},url: "/post_images/:postid/:style/:filename"
请注意,:postid
不仅仅是您在模型中定义的实例方法 - Paperclip 独占利用插值来定义URL /路径中的动态变量声明。
答案 1 :(得分:1)
在我的一个模特中我有
Paperclip.interpolates :invoice_file_name do |attachment, style|
attachment.instance.invoice_file_name
end
取自Github上的Paperclip wiki。