投稿

factory botでユニークな値を設定

sequence(:username) { |n| "user#{n}" }

FactoryBot でテストデータを作成する際、username のような一意制約のあるカラムに重複しない値を自動生成したいときに使う。

sequence はブロックが呼ばれるたびに連番 n を渡すため、user1, user2 … のように一意な値が生成される。

sequence(:username) { |n| "user#{n}" }

FactoryBot.define do
  factory :user do
    first_name 'John'
    last_name  'Doe'
    birthdate  { 21.years.ago }
    admin false

    sequence(:username) { |n| "user#{n}" }
  end
end

Factory Bot cheatsheet