如何使用carrierwave重命名已加载的文件

时间:2014-07-17 11:54:15

标签: ruby-on-rails ruby ruby-on-rails-3 rename carrierwave

我想重命名已下载的文件carrierwave。在上传程序中,我将以下代码添加到加载了所需名称的新文件中。

是:

def filename
  "photo.jpg" if original_filename
end

成为:

def filename
  "#{secure_token}.jpg" if original_filename
end

protected
def secure_token
  var = :"@#{mounted_as}_secure_token"
  model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end

我已尝试使用rake任务重新创建已下载的文件:

RoutePointPhoto.all.each { |i| i.photo.recreate_versions! }

这将创建具有正确名称的文件副本。但是在数据库中,文件名保持不变“photo.jpg” 提示我做错了什么?

1 个答案:

答案 0 :(得分:0)

我做的是创建了一个文档控制器,我管理文件。 show动作是重命名的地方

#documents_controller.rb
  def show
    data = open(document.file_url.to_s)
    #change #{'photo'} to what every you want to call the file 
    send_data data.read, filename: "#{'photo'}.#{document.file_identifier.split('.').last}", disposition: 'inline'
  end

我希望这适用于你正在寻找的东西