Возможно ли дублирование генерации имени Faker?

Может ли кто-нибудь подтвердить, что Faker генерирует имя может создавать повторяющиеся имена или части имен?

Если я создам двух пользователей, есть ли вероятность, что у одного пользователя будет то же самое имя_имя, что и имя_фамилии другого пользователя? Я вижу, что есть идентичные имена используется как для мужских имен и фамилий, так и для женских имен и фамилий. Таким образом, у меня может быть Картер Коул для первого пользователя и Бейли Картер для второго пользователя, например.

Если я создам двух пользователей, возможно ли, чтобы у обоих пользователей были одинаковые имена и фамилии. Например, Дэниел Фэй и Дэниел Фэй?


person atw    schedule 16.01.2020    source источник


Ответы (1)


Я не уверен на 100%, но предполагаю, что такая ситуация может произойти. Однако у фейкера есть инструмент, чтобы избежать такой ситуации. Вы читали этот абзац?

Добавьте к вызову метода префикс unique. Например:

Faker::Name.unique.name # This will return a unique name every time it is called

Если от генератора, имеющего ограниченное количество потенциальных значений, запрашивается слишком много уникальных значений, может возникнуть исключение Faker::UniqueGenerator::RetryLimitExceeded. Можно очистить запись уникальных значений, которые были возвращены, например, между тестами.

Faker::Name.unique.clear # Clears used values for Faker::Name Faker::UniqueGenerator.clear # Clears used values for all generators

Вы также можете передать несколько уже использованных значений уникальному генератору, если у вас есть коллизии с сгенерированными данными (например, при использовании FactoryBot со случайными и установленными вручную значениями).

Использование: Faker::<generator>.unique.exclude(method, arguments, list)

Добавьте 'azerty' и 'wxcvbn' в генератор строк с длиной 6 символов Faker::Lorem.unique.exclude :string, [6], %w[azerty wxcvbn]

person Roman Alekseiev    schedule 16.01.2020