FactoryBot 工厂中 transient do
的目的是什么?
我见过很多工厂都是以下面这样的开头。
factory :car do
owner nil
other_attribute nil
end
...
我在这个博客上找到了一些信息:
Using FactoryGirl to easily create complex data sets in Rails
但我仍然不完全理解如何以及为什么要这样做。我对 FactoryBot 的经验很少。
有使用 FactoryBot 经验的人可以分享一些见解吗?
最佳答案
transient
属性允许您传入模型中不是属性的数据。
假设您有一个名为 car
的模型,它具有以下属性:
- 姓名
- 购买价格
- 模特
在工厂中创建汽车模型时,您想将汽车名称大写。我们能做的是:
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
因此,每当您创建汽车工厂并希望将名称大写时。你可以做
car = FactoryGirl.create(:car, capitalize: true)
car.name
# => "JACKY"
关于ruby-on-rails - FactoryBot 工厂中 `transient do` block 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38573131/