【发布时间】:2013-03-05 17:50:38
【问题描述】:
在我正在开发的 Ruby on Rails 应用程序中,我允许用户上传文件并希望为这些文件提供一个简短的随机字母数字名称。 (例如“g7jf8”或“3bp76”)。最好的方法是什么?
我正在考虑从原始文件名和时间戳生成哈希/加密字符串。然后查询数据库以仔细检查它不存在。如果是,则生成另一个并重复。
我看到这种方法的问题是,如果重复字符串的概率很高,它可能会增加相当多的数据库负载。
【问题讨论】:
-
还有两个请求同时尝试添加相同名称的潜在(如果不太可能)竞争条件。数据库应该对该列具有唯一约束,并且您应该准备好捕获
ActiveRecord::RecordNotUnique。 -
“随机”名称是否具有安全目的?如果没有,您还有更多选择。
-
它不需要安全,但可以在 URL 中使用。感谢到目前为止的所有帮助。许多想法可以尝试和努力。
标签: ruby-on-rails ruby ruby-on-rails-3