Gem carrierwave-upyun 保存到数据库的文件名和上传到又拍云的文件名不一致的问题

w7938940 · 2015年09月24日 · 最后由 w7938940 回复于 2015年09月25日 · 1670 次阅读

代码:

def filename
  if super.present?
    @name = "#{Time.now.to_i}#{rand(10..99)}.#{file.extension.downcase}" if original_filename
  end
end

save方法执行没有报错,数据库里面存的文件名是144308282075.zip,但是又拍云保存的文件名是144308282041.zip,就是最后两位不同。

最后两位 rand(10..99) 是防止同一时间上传的文件重名的问题,去掉 rand(10..99) 之后就完全正常了,不知道是什么问题?

@name = "#{Time.now.to_i}#{rand(10..99)}.#{file.extension.downcase}" if original_filename

改成

@filename ||= "#{Time.now.to_i}#{rand(10..99)}.#{file.extension.downcase}" if original_filename

#1 楼 @huacnlee 产生的原因是因为会进行两次赋值吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号