ruby-on-rails – 生成唯一的文件名

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 生成唯一的文件名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的文件需要唯一的文件名.
def filename
    "#{SecureRandom.urlsafe_base64}.gif"
end

这样可以保存如下文件

ylGP48WxZXOY2OQ_x9dxAA.gif

但是它在数据库中的相应字段要保存如下:

jED48PRNz0asZzwYQXzecw.gif

我认为发生的事情是Carrierwave在编写文件调用file_name函数,当它将实例保存在数据库中时,导致urlsafe_base64被调用两次并创建两个不同的字符串.当我将名称硬编码为测试时,它的工作正常.

那怎么能阻止这个呢?我知道这是令人发指的,但是如何让Carrierwave在数据库中使用相同的随机生成文件名并在编写文件时?我认真地认为这应该被视为一个错误.

解决方法

这是一个选择:
def filename
    random_string
  end   

  protected 

  def random_string
    @string ||= "#{SecureRandom.urlsafe_base64}.gif"
  end

我同意carrierwave可能更直观一些.

原文链接:https://www.f2er.com/ruby/268289.html

猜你在找的Ruby相关文章