Rai*_*ner 9 ruby ruby-on-rails paperclip ruby-on-rails-3
我想更改照片的基名(filename):
在我的模型中,我有:
attr_accessor :image_url, :basename
has_attached_file :image,
:styles => { :original => ["300x250>", :png], :small => ["165x138>", :png] },
:url => "/images/lille/:style/:id/:basename.:extension",
:path => ":rails_root/public/images/lille/:style/:id/:basename.:extension"
before_save :basename
private
def basename
self.basename = "HALLLO"
end
Run Code Online (Sandbox Code Playgroud)
但文件名根本没有改变.
如果您直接分配文件,则可以执行以下操作:
photo.image = the_file
photo.image.instance_write(:file_name, "the_desired_filename.png")
photo.save
Run Code Online (Sandbox Code Playgroud)
我这样做是为了去除空格:
before_post_process :transliterate_file_name
private
def transliterate_file_name
self.instance_variable_get(:@_paperclip_attachments).keys.each do |attachment|
attachment_file_name = (attachment.to_s + '_file_name').to_sym
if self.send(attachment_file_name)
self.send(attachment).instance_write(:file_name, self.send(attachment_file_name).gsub(/ /,'_'))
end
end
end
Run Code Online (Sandbox Code Playgroud)
我希望这能帮到您。
编辑:
在你的例子中:
def basename
self.image_file_name = "foobar"
end
Run Code Online (Sandbox Code Playgroud)
应该做这项工作。(但可能会重命名该方法;))