0

我想使用回形针插件,我在文档中看到了更改存储路径的方法。

由于我的模型(以及同一级别的目录)将拥有数千个项目,因此我想知道如何格式化我的 :id (并将其分解)以执行某些操作,例如,如果 id 为 32768,例如:

:path => ":rails_root/public/system/:class/:attachment/3/2/7/6/8/:style/:basename.:extension"

爆炸 :id 并将新路径发送到回形针的最佳方法是什么?

4

2 回答 2

2

您想使用Paperclip::Interpolations。您可以创建使用分解 id 的自定义插值。首先,您需要在路径中使用自定义插值:

 :path => ":rails_root/public/system/:class/:attachment/:exploded_id/:style/:filename"

然后像这样向模型添加一个定义:

Paperclip.interpolates :exploded_id do |attachment, style|
  attachment.instance.exploded_id
end

以及爆炸 id 的方法:

def exploded_id
  self.id.to_s.scan(/./).join('/')
end
于 2012-04-25T21:57:40.287 回答
1

Paperclip 提供了一种处理文件夹结构的内置方法:

:path => ":rails_root/public/system/:class/:attachment/:id_partition/:style/:basename.:extension"

这将给出目录结构

.../:attachment/000/032/768/:style/...

这不使用您请求的文件夹格式,但可能更有效。

奖金

如果您要从现有文件夹结构转换到这个 id 分区结构,请检查并查看这个Ruby 脚本,它会为您移动文件夹。以防万一,请在运行之前对服务器上的虚拟文件夹进行一些测试。

于 2012-08-14T09:40:57.863 回答