我的在线商店中的每个订单都有一个面向用户的订单号。我想知道生成它们的最佳方法。标准包括:
- 短的
- 容易在电话中说出来(例如,“m”和“n”有歧义)
- 独特
- 校验和(矫枉过正?有用吗?)
- 编辑:不透露总共有多少订单(客户可能会发现下订单感到不安)
现在我正在使用以下方法(无校验和):
def generate_number
possible_values = 'abfhijlqrstuxy'.upcase.split('') | '123456789'.split('')
record = true
while record
random = Array.new(5){possible_values[rand(possible_values.size)]}.join
record = Order.find(:first, :conditions => ["number = ?", random])
end
self.number = random
end