【问题标题】:Is Faker name generation duplication possible?Faker 名称生成重复是否可能?
【发布时间】:2020-01-16 12:31:59
【问题描述】:
有人可以确认Faker name generation 可以创建重复名称或部分名称吗?
如果我创建两个用户,一个用户的名字是否可能与另一个用户的姓氏相同?我可以看到有identical names 用于男性的名字和姓氏以及女性的名字和姓氏。因此,我可以让第一个用户使用 Carter Cole,让第二个用户使用 Bailey Carter。
如果我创建两个用户,两个用户的名字和姓氏是否可能相同。比如 Daniel Fay 和 Daniel Fay?
【问题讨论】:
标签:
ruby-on-rails
ruby
faker
【解决方案1】:
我不是 100% 确定,但我想这种情况可能会发生。但是,faker 有工具可以避免这种情况。你读过这个paragraph 吗?
在你的方法调用前加上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]