ruby-on-rails – 当自定义插值更改时,强制回形针重命名文件

我使用Paperclip来管理Rails 3中某个Model的上传图像.这个模型属于另一个模型.我希望我的图像路径能够反映这种关系,所以我为此创建了一个自定义插值.

问题是,我还希望能够编辑belongs_to对象的名称,我希望Paperclip相应地重命名文件.

这是一个简单的例子:

class Make < ActiveRecord:Base
  attr_accessible :name

  has_many :models
end

class Model < ActiveRecord:Base
  attr_accessible :img, :make, :name

  belongs_to :make
  has_attached_file :img, :style => { :thumb => "100x100" },
                    :path => "/cars/:make_name/:name/:style/:hash.png",
                    :hash_secret => "blabla"

  Paperclip.interpolates :make_name do |attachment, style|
    attachment.instance.make.name
  end

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

所以,假设我创建了一个制作雪佛兰和模型Camaro,我的图像路径将是/cars/chevrolet/camaro/thumb/my_hash.png

如果我决定将雪佛兰条目名称更改为雪佛兰,Rails会尝试在/cars/chevy/camaro/thumb/my_hash.png找到图像,但由于图像未重命名,因此无法找到.

重命名条目时,如何强制Paperclip更新所有图像路径?

谢谢!

最佳答案 更健壮的文件路径可以使用make id而不是make name.即,更改make名称时/cars/:make_id/:name/:style/:hash.png将继续有效.

点赞