こんにちは!kossyです!
今回はテストデータを生成するGemであるfactory_botを使う際に、validationをskipする方法について、
ブログに残してみたいと思います。
to_createメソッドを使う
答えを先に言ってしまうと、下記のようにfactoriesファイルに定義してしまえばOKです。(Fakerを使っています)
FactoryBot.define do factory :admin do name { Faker::Name.name } email { Faker::Internet.email } password { Faker::Internet.password } trait :skip_validation do to_create { |instance| instance.save(validate: false) } end end end
呼び出す際は以下のように記述します。
create(:admin, :skip_validation)
traitは処理をグループ化して、createの第二引数以降にシンボルで呼び出すことで、traitで定義した属性を適用することができます。
今回のケースの場合、to_createメソッドにブロック引数を渡し、そのブロックの中でインスタンスのsaveメソッドを呼び出す際にvalidationを適用しないようにしています。
大いに参考にさせていただいたサイト
この場を借りて御礼を申し上げます。
FactoryGirl でバリデーションもコールバックも無効にしたい - Qiita