Убедитесь, что случайно сгенерированная строка уникальна - PullRequest
0 голосов
/ 28 февраля 2019

Я создаю реферальную систему, в которой, когда пользователь создает учетную запись, случайным образом генерируется строка из шести символов.

Для этого я использую гем uniquify :

class User < ApplicationRecord
  uniquify :random_string, length: 6
end

Например, создается строка вроде: "Ed3x7W".

Даже если это маловероятно, я бы хотел найти способ убедиться на 100% в каждомСозданная строка уникальна.

Какой лучший способ добиться этого?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вместо использования gem вы можете использовать это SecureRandom.hex(3) или base64 SecureRandom.urlsafe_base64(4).

Добавить уникальную проверку индекса или добавить проверку в модели для этого поля.

0 голосов
/ 28 февраля 2019

Используйте Set (вам нужно будет сделать require 'set' и ввести каждую строку в набор. После генерации строки посмотрите, есть ли она в наборе, и если она есть, сгенерируйте новую.

0 голосов
/ 28 февраля 2019

Драгоценный камень делает несколько проверок , которые дадут вам 95% + гарантия *.

Если вы хотите быть на 100% уверенным, создайте уникальный индекс для этого столбца.


* Я вытащил это число из воздуха.Но если не происходит какой-либо параллельной активности, вы должны быть в безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...