Xer*_*ero 1 ruby ruby-on-rails factory-bot
我试图与FactoryGirl实例化多个对象(具有唯一电子邮件的来宾)
guests = create_list(:guest, 3)
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
Failure/Error: guests = create_list(:guest, 3)
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
Run Code Online (Sandbox Code Playgroud)
这是我的工厂:
FactoryGirl.define do
factory :guest do
email Faker::Internet.unique.email
firstname 'John'
lastname 'Doe'
password 'test'
password_confirmation 'test'
factory :guest_with_bookings do
email "#{SecureRandom.hex}@test.com"
transient do
bookings_count 2
end
after(:create) do |guest, evaluator|
create_list(:booking, evaluator.bookings_count, guests: [guest])
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
即使使用Faker :: Internet.unique.email,当我尝试创建1位以上的访客时,它也不起作用
在您的工厂中使用顺序
FactoryGirl.define do
factory :guest do
sequence(:email) { |n| "name_#{n}@example.com" }
Run Code Online (Sandbox Code Playgroud)
或与Faker结合使用
FactoryGirl.define do
factory :guest do
sequence(:email) { |n| Faker::Internet.unique.email("Nancy_#{n}") }
Run Code Online (Sandbox Code Playgroud)