駆け出しエンジニアの気ままブログ

気になったことについて、調べながら投稿するブログです。

FactoryBotで、簡単にバリデーションを検証する

概要

モデルにカラムの追加を行うようなタスクは日常茶飯事ではないでしょうか?

その度に、バリデーションの検証をする必要があります。

いままで、コンソールで確認するときに、該当モデルをnewして、他のattributesに値を入れて、 やっと新しく追加したattiributeに値を入れてバリデーションの検証をしていました

今回、FactoryBotで簡単に作成することで時間短縮にもなるので紹介します

内容

前提として、userモデルに新しくgenerationを追加するタスクとします

今までの方法

u = User.new()
#<User id: nil, name: '', email: '', gender: '', generation: ''>

u.name = 'taro'
u.email = 'test@example.com'
u.gender = 'man'
u
#<User id: nil, name: 'taro', email: 'test@example.com', gender: 'man', generation: ''>

u.generation = "40"
# やっと、値を入れることができた

# ここから、バリデーション検証できる!!
u.valid?

これだと、newしてから、他のattributesに値を入れるのがめんどい…

今回の方法

factories/user.rbが作られていること!!

FactoryBot.define do
  factory :user do

    name { 'taro' }
    email { 'test@example.com' }
    gender { 'man' }

  end
end
u = FactoryBot.build(:user)
#<User id: nil, name: 'taro', email: 'test@example.com', gender: 'man', generation: ''>

u.generation = '40'

# すぐ、バリデーションの検証ができる
u.valid?

traitで特定の情報や、アソシエーションも簡単に生成できます Factoryで定義されていることが前提ですが、、、

# adminのuser 生成
u = FactoryBot.build(:user, :admin)

# userに紐ついているpost生成
p = FactoryBot.build(:user, post: :post)

まとめ

意外と時間のかかる作業ですが、FactoryBotの情報を使うことで、簡単にできるようになるので、 使う価値があるかなとおもいます!

最後まで、ありがとうございました!