首页 > 解决方案 > 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 on Rails 进行编程,我在谷歌上搜索很难做到。这个的语法是什么?

另外,这是编写带有关联的工厂的最佳方式吗?

标签: ruby-on-railstdd

解决方案


这是正确的语法:

FactoryBot.define do |variable|
  factory :user do
    email { Faker::Internet.unique.email}
    name { Faker::Name.name }
    password { Faker::Internet.password }
    group
  end
end

如果您未指定group,FactoryBot 将group在您创建或构建user.

如果您确实指定了group,FactoryBot 将使用group您指定的。


推荐阅读