Polymorphic Paperclip覆盖具有相同名称的文件

时间:2010-03-09 12:00:18

标签: ruby-on-rails file paperclip interpolation polymorphism

在使用Paperclip的Polymorphic版本的Rails中,默认的保存技术意味着具有相同名称的文件会相互覆盖。在路径和URL中包含:id不起作用,因为它只是使用old:id覆盖早期文件。

我尝试使用时间戳进行插值,但它只是在显示图像时查找当前时间(加上我有多个缩略图需要的时间超过一秒,因此图像会有不同的图章)。 / p>

Paperclip.interpolates :uniqueid do |attachment, style|
  Time.now.to_i.to_s
end

还尝试使用十六进制数字,但它会针对每个拇指进行迭代,因此每次都会出现新的十六进制值。

Paperclip.interpolates :uniqueid do |attachment, style|
  ActiveSupport::SecureRandom.hex(3)
end

因为它是Polymorphic版本,因此拥有它自己的模型,我不知道如何从父模型访问值(在本例中为“Post”)。 下面代码的变化都会引发“未定义的方法”错误。

Paperclip.interpolates :user_id do |attachment, style|
  current_user.id
end

对不起,如果它似乎是一个新手问题,但它是传统Paperclip的好文档,但对于Polymorphic fork没有任何内容。

1 个答案:

答案 0 :(得分:0)

如何在:class :path中加入 has_attached_file

has_attached_file :attachment,
  :path => ":rails_root/attachments/:class/:id/:attachment/:basename.:extension",
  :url => "downloads/:id/:title.:extension"