What is the purpose of transient do
in FactoryBot factories?
I\'ve seen a lot of factories that begin with something like below.
factory :c
transient
attributes allow you to pass in data that isn’t an attribute on the model.
Say you have a model called car
with the following attributes:
You want to capitalize the name of the car when you create the car model in the factory. What we can do is:
factory :car do
transient do
# capitalize is not an attribute of the car
capitalize false
end
name { "Jacky" }
purchase_price { 1000 }
model { "Honda" }
after(:create) do |car, evaluator|
car.name.upcase! if evaluator.capitalize
end
end
Hence, whenever you create the car factory and you want to capitalize the name. You can do
car = FactoryGirl.create(:car, capitalize: true)
car.name
# => "JACKY"
Hope it helps.