コールバック付き
factory_botのコールバックで評価された定義自体を使う必要があるとき、(定義に)2つ目のブロック引数を宣言してそこから一過的属性を使う必要があります。 こうすると、最終的な評価された値が表されます。
factory :user do
transient do
upcased { false }
end
name { "John Doe" }
after(:create) do |user, context|
user.name.upcase! if context.upcased
end
end
create(:user).name
#=> "John Doe"
create(:user, upcased: true).name
#=> "JOHN DOE"