我有组和用户模型,并尝试创建相应的测试工厂。
FactoryBot.define do |variable|
factory :group do
name { Faker::Name.name }
end
end
由于用户属于一个组,因此我需要给它一个整数值(组ID(,但无法弄清楚如何。从我的Laravel背景来看,这就是我期望的...
FactoryBot.define do |variable|
factory :user do
email { Faker::Internet.unique.email}
name { Faker::Name.name }
password { Faker::Internet.password }
# Grab a first group record in the database or create a new one and return its ID.
group_id : # ????
end
end
这是我第一次与Ruby和Ruby在Rails上的编程,我很难搜索过它。这是什么语法?
另外,这是编写与关联的工厂的最佳方法?
这是正确的语法:
FactoryBot.define do |variable|
factory :user do
email { Faker::Internet.unique.email}
name { Faker::Name.name }
password { Faker::Internet.password }
group
end
end
如果您不指定group
,则每当您创建或构建user
时,FactoryBot将为您创建或构建group
。
如果您确实指定了group
,则FactoryBot将使用您指定的group
。
在您的测试中,但不在工厂中,您可以使用此
group = FactoryBot.create(:group)
user = FactoryBot.create(:user, group: group)
或您想尝试获取创建的第一个组
group = Group.first # i'm not sure, but you can try this
user = FactoryBot.create(:user, group: group)