FactoryBot Rails 如何在创建记录时填写"属于"字段



我有组和用户模型,并尝试创建相应的测试工厂。

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)

最新更新