我使用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将继续有效.