Каждый заказ в моем интернет-магазине имеет номер заказа, ориентированный на пользователя. Мне интересно, как их создать. Критерии включают:
- Короткие
- Легко сказать по телефону (например, "m" и "n" являются двусмысленными)
- Уникальный
- Контрольная сумма (overkill? Полезно?)
- Изменить: Не показывает, сколько всего заказов было (клиент может найти, что он нервничает, чтобы сделать ваш третий заказ)
Сейчас я использую следующий метод (без контрольной суммы):
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