保证代码唯一的最佳方法是什么?代码是XXX-XXXXX,其中X只是一个数字。
除了在数据库表中搜索代码之外,还有什么方法可以使流程更快更干净?
问候。
答案 0 :(得分:5)
:uniqueness
验证。它处理数据库搜索。答案 1 :(得分:0)
由于没有两次是相同的,因此使用某种基于时间的散列是保证唯一性的最简单方法。如果你正在存储xxx-xxxx,那么你就是在限制自己。您还可以使用唯一的自动递增值。将值服务器端存储为要分配的下一个号码,然后在发出新的唯一ID时将其递增。
两者都是可接受的选项而不知道其他信息
答案 2 :(得分:0)
基于时间的哈希实际上并不“保证”是唯一的。使用某种类型的哈希只是一种从大型源数据创建摘要的方法。由于所有数据都可以用128位描述(使用md5),因此可能会遇到哈希冲突。
验证:uniquness将执行查询以确定之前是否使用了字段值。你可以使用它,但它不应该是你唯一的解决方案。如果该字段是唯一的,则应在数据库中的列上放置唯一索引。如果您只依赖于rails验证,那么在将数据插入表中时,您将面临竞争条件的风险。我可以绕过验证,但另一个写入也可以通过验证,最终进入表中。
您是在生成值还是用户输入?