ユーザー認証にSorcery使ってるときのFactoryBotでactivation_state: 'active'にできない
表題の通り
ユーザー認証にSorceryを使っていて、(:user_activationを設定していて、)
authenticates_with_sorcery!
したUserモデルのFactoryBotで、
FactoryBot.define do factory :user do ... trait :activated do activation_state { :active } end ... end end
で、 FactoryBot.create(:user, :activated)
しても、
activation_status = "pending"
なUserが生成されてしまう。
Sorceryの実装見ていないけど、どうせUser.create
の挙動がオーバーライドされてるか, after_create
フックあたりで必ず
新規に作成されたUserの activation_state
を "pending"
にする実装があるんだろう。
結局、
trait :activated do after(:create) do |user| user.update!(activation_state: :active) end end
とした。
trait :activated do after(:create) do |user| user.activate! end end
でもいいけど。