Let's say you have two factories that share some attributes and traits:
FactoryBot.define do
  factory :user do
    screen_name 'john'
    email 'foo@bar.de'
    trait :with_profile do
      age 18
      description 'lorem ipsum'
    end
  end
  
  factory :client do
    full_name 'John Doe'
    email 'foo@bar.de'
    trait :with_profile do
      age 18
      description 'lorem ipsum'
    end
  end
  
end
You can re-use the shared fields by defining a trait outside the other factory definitions:
FactoryBot.define do
  trait :person do
    email 'foo@bar.de'
    trait :with_profile do
      age 18
      description 'lorem ipsum'
    end
  end
  
  factory :user, traits: [:person] do
    screen_name 'john'
  end
  
  factory :client do
    person
    full_name 'John Doe'
  end
  
end
Posted by Henning Koch to makandra dev (2016-06-28 11:13)