Когда вы говорите, что увеличение идентификатора не вариант, это потому, что вы не хотите, чтобы пользователи видели схему, которую вы используете, или потому что генерация должна быть без сохранения состояния (т. Е. Вы не можете отслеживать всех сгенерированных вами идентификаторов)?
Если это первое, то вы можете сгенерировать идентификатор, проверить, не использовали ли вы его уже, и, если да, сгенерировать другой новый идентификатор. (Кажется довольно очевидным, так что извините, если я на неправильном пути.) Вы могли бы сделать что-то вроде этого:
while id = rand(2**256).to_s(36)[0..5]
break unless Ids.exists?(id)
end
, где Ids.exists?(id)
- метод «уже существует».