tim*_*ood 13 ruby ruby-on-rails ruby-on-rails-3
在我正在开发的Ruby on Rails应用程序中,我允许用户上传文件,并希望为这些文件提供一个简短的随机字母数字名称.(例如'g7jf8'或'3bp76').做这个的最好方式是什么?
我想从原始文件名和时间戳生成哈希/加密字符串.然后查询数据库以仔细检查它不存在.如果是,请生成另一个并重复.
我用这种方法看到的问题是,如果重复字符串有很高的可用性,它可能会增加很多数据库负载.
Ben*_*enj 12
我用这个:)
def generate_token(column, length = 64)
  begin
    self[column] = SecureRandom.urlsafe_base64 length
  end while Model.exists?(column => self[column])
end
替换Model您的型号名称
Chr*_*son 10
SecureRandom.uuid
会给你一个全球唯一的字符串.http://en.m.wikipedia.org/wiki/Universally_unique_identifier
SecureRandom.hex 32
会给出一个随机的String,但它的算法并没有针对唯一性进行优化.当然,假设真正的随机性,与32位数碰撞的机会基本上是理论上的.你可以在100年内每秒赚10亿,并且只有50%的碰撞几率.
| 归档时间: | 
 | 
| 查看次数: | 9716 次 | 
| 最近记录: |