我需要我的文件的唯一文件名。生成唯一的文件名
def filename
"#{SecureRandom.urlsafe_base64}.gif"
end
这样就节省了文件像这样:
ylGP48WxZXOY2OQ_x9dxAA.gif
但在数据库中其各自的领域要保存这样的:
jED48PRNz0asZzwYQXzecw.gif
我觉得发生了什么事是Carrierwave是在写入文件时以及在数据库中保存实例时调用file_name
函数,导致urlsafe_base64被调用两次并创建两个不同的字符串。当我将一个名称硬编码为测试时,它完美地工作。
那怎么能阻止呢?我知道这是无礼的要求,但我怎么能让Carrierwave在数据库中使用相同的随机生成的文件名,以及在编写文件时?我认真地认为这应该被认为是一个错误。
当你只是想唯一的文件名,你为什么不尽量考虑'YYYYMMddHHmmss.gif'为您的文件名..? –
绝对是一个选项。我只是希望载波不会一直踩在我的脚趾上......这很好,但它可能会好得多。 – user3067865