Rails Faker - 如何生成自定义域名邮箱?

Rails Faker - How to generate a custom domain email?

理想情况下,我想根据 Faker 生成的电子邮件创建一个假电子邮件,但我想实现类似:faker_first_name@mydomain.com。该文档显示您可以为第一部分执行此操作,但不能为实际域执行此操作。有没有办法做到这一点?

20.times do
  u = User.new(first_name: Faker::Name.first_name,               
               last_name:  Faker::Name.last_name,
               email: Faker::Name.first_name"@THISPART.com",
               )
  u.save
end

2019 年 12 月更新:

Faker version v2.8.0 引入域支持 - Release v2.8.0

现在,可以在创建电子邮件地址时传递域。

以下是可能的选项:

Faker::Internet.email #=> "eliza@mann.net"
Faker::Internet.email(name: 'Nancy') #=> "nancy@terry.biz"
Faker::Internet.email(name: 'Janelle Santiago', separators: '+') #=> janelle+santiago@becker.com"
Faker::Internet.email(domain: 'example.com') #=> alice@example.com"

注:以上代码示例来自faker文档

旧答案:

好吧,没有这样的规定将 domain name 传递给方法

但是,您可以利用 Faker::Internet.user_name

User.new(
  first_name: Faker::Name.first_name,               
  last_name:  Faker::Name.last_name,
  email:      "#{Faker::Internet.user_name}@customdomain.com"
)

我认为您只是错过了字符串连接:+

 :006 > Faker::Name.first_name+"@THISPART.com"
 => "Irving@THISPART.com" 

如果您要保留相同的名称,请在之前保存:

fn = Faker::Name.first_name
sn = Faker::Name.last_name

u = User.create(
          :forename => fn,
          :surname => sn,
          :email => "#{fn}.#{sn}@yourdomain.net",

Faker::Name.first_name 将始终生成一个新的随机值。

最新版本的 Faker 内置了对自定义电子邮件子域的支持。

Faker::Internet.email(domain: 'customdomain.com')