【问题标题】:Rails Faker - How to generate a custom domain email?Rails Faker - 如何生成自定义域电子邮件?
【发布时间】:2017-10-17 19:17:27
【问题描述】:
理想情况下,我想根据 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
【问题讨论】:
标签:
ruby-on-rails
rubygems
faker
【解决方案1】:
2019 年 12 月更新:
Faker 版本 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"
)
【解决方案2】:
我想你只是错过了字符串 concat:+
: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 总是会生成一个新的随机值。
【解决方案3】:
最新版本的 Faker 内置了对自定义电子邮件子域的支持。
Faker::Internet.email(domain: 'customdomain.com')