这是我的模特
class Technology < ActiveRecord::Base
attr_accessible :name #etc ....
has_attached_file :logo, :path => ":rails_root/public/technologies/logos/:normalized_input_file_name"
Paperclip.interpolates :normalized_input_file_name do |attachment, style|
attachment.instance.normalized_input_file_name
end
def normalized_input_file_name
name = "#{self.name}".downcase
"#{self.tuid}_"+name.gsub(/[^a-zA-Z0-9]{2,}/,' ').strip.gsub(/\W/,'_').gsub(/\A_/,'').gsub(/_\z/,'')+"_150x"+".png"
end
end
当我创建任何技术时,我使用方法“normalized_input_file_name”为我上传一个徽标,并使用新名称存储在公共目录中。 例如,技术名称为HTML5,文件名称为id_html5_150x.png 但是当我需要更新名称时,图像路径也发生了变化。 例如HTML 5文件名变为id_html_5_150x.png此处不更新实际图像文件名 但路径已更新。所以我找不到图像。
答案 0 :(得分:0)
如果您发现before_save
属性会发生变化,请使用name
挂钩再次下载并存储图像。
此代码完全未经测试但应该给您一个想法:
before_save do
if self.name_changed?
self.logo = logo.uploaded_file
end
end