トレイトを使う

factory_botでインスタンスを構築するとき、トレイトにはSymbolのリストも渡せます。

factory :user do
  name { "Friendly User" }

  trait :active do
    name { "John Doe" }
    status { :active }
  end

  trait :admin do
    admin { true }
  end
end

# :active状態で名前が「Jon Snow」の管理者の利用者を作ります。
create(:user, :admin, :active, name: "Jon Snow")

この機能はbuildbuild_stubbedattributes_forcreateで動きます。

create_listメソッドとbuild_listメソッドも対応しています。 2つ目の仮引数に作成・構築するインスタンス数を渡すことをご留意ください。 このファイルの「複数レコードの構築と作成」でドキュメントに書かれている通りです。

factory :user do
  name { "Friendly User" }

  trait :active do
    name { "John Doe" }
    status { :active }
  end

  trait :admin do
    admin { true }
  end
end

# 3人の管理利用者を作ります。:active状態があり、名前は「Jon Snow」です
create_list(:user, 3, :admin, :active, name: "Jon Snow")