コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

FactoryBotでそのモデルの持つメソッドを生成後に実行する

Sorcery とか使っていると 『アクティベーションのユーザ』 みたいなオブジェクトが欲しくなるのでそういうのの書き方

環境

rails (5.1.5)
factory_bot (4.8.2)
factory_bot_rails (4.8.2)

やり方

after(:create) のコールバックを活用する

Sorceryを交えた例

factory :user do
  # なんかuserのデフォルト定義
  
  # アクティベーション済
  factory :user_with_activated do
    after(:create) do |user|
      # Userのインスタンスメソッドである activate! を実行
      user.activate!
    end
  end
end

参考サイト