Я прочитал этот из Thoughtbot, но он все еще запутывает меня.
Это их пример:
factory :user do
transient do
rockstar true
upcased false
end
name { "John Doe#{" - Rockstar" if rockstar}" }
email { "#{name.downcase}@example.com" }
after(:create) do |user, evaluator|
user.name.upcase! if evaluator.upcased
end
end
create(:user, upcased: true).name
#=> "JOHN DOE - ROCKSTAR"
Итак,
- Является ли
.upcased
реальным атрибутом модели? - Что действительно делает блок
transient
? Установка переменных, которые затем могут использоваться в factory? - Что такое
evaluator
? Всегда ли это нужно пропустить последним? Что делать, если ваша функцияcreate
использует черты, переходные процессы и имеет несколько значений?