FactoryBot:如何在 skip_create 工厂中使用瞬态来指定内部工厂中的属性?

FactoryBot: how to use transient in skip_create factory to specify properties in an internal factory?

我有以下工厂,里面有 _skip_create_,并且在创建时还调用了另一个工厂,我试图在该工厂上指定一个特定的 UUID。示例:

FactoryBot.define do
  factory :experiment do

    transient { order nil }

    env_array = %w[prod dev test]
    uuid { SecureRandom.uuid }
    name { 'some name' }

    skip_create
    initialize_with do
      env_array.each_with_index do |env, idx|
        FactoryBot.create(:environment, uuid: 'b5c096d5-479a-4693-ac14-9cea7dfd045c') if order.eql? 'first'
      end
    end
  end
end

问题是,我无法让 order 生效。我得到:

A​​rgumentError:特征未注册:顺序

如何在调用工厂时指定 order

那是因为你漏了花括号{}

FactoryBot.define do
  factory :experiment do
    transient do
      order { nil }
    end
   ....
  end
end