Railsで、gemをアップデートしていた時によくわからない記述を発見したので、検証備忘録です。
https://github.com/thoughtbot/factory_bot/blob/main/NEWS.md#600-june-18-2020
こちらに、
Added: automatic definition of traits for Active Record enum attributes, enabled by default
とあります。
これがよくわからなかったので、手元で検証しました。
動作例
仮に以下のようなクラスがあり、
class User < ApplicationRecord
enum role: { normal: 0, vip: 1, admin: 2 }
enum rank: { white: 0, silver: 1, gold: 2 }
end
以下のように適当なfactory_botが定義されていたとすると
FactoryBot.define do
factory :user do
end
end
自分で定義しなくても、enumの値を使ってtraitが自動生成されるようです。
it do
user_normal = create(:user, :normal) # user_normal.role == 'normal'
user_vip = create(:user, :vip) # user_vip.role == 'vip'
user_silver = create(:user, :silver) # user_silver.rank == 'silver'
end
個人的には、こういうのは混乱のもとになりそうなので、愚直にキーワード引数で指定しますね...
it do
user_normal = create(:user, role: :normal)
user_vip = create(:user, role: :vip)
user_silver = create(:user, rank: :silver)
end
参考リンク