戦略を立てるとは

`factory_bot`はフィクスチャを交換します、簡単な定義構文を使って、複数構築戦略(保存されたインスタンス、保存しないインスタンス、属性ハッシュそしてスタブオブジェクト）をサポートし`factory`を継承を含む同じクラス(ユーザー、管理者ユーザーなど)の複数の`factory`をサポートする。

>factory_bot is a fixtures replacement with a straightforward definition syntax, support for multiple build strategies (saved instances, unsaved instances, attribute hashes, and stubbed objects), and support for multiple factories for the same class (user, admin_user, and so on), including factory inheritance.

https://github.com/thoughtbot/factory_bot?tab=readme-ov-file#documentation:~:text=factory_bot%20is%20a,including%20factory%20inheritance

factory_bot book内の豊富なリファレンス、ガイドそしてクックブックを見てください
>See our extensive reference, guides, and cookbook in the factory_bot book.

RSpecまたはRailsなどのサードバーティライブラリと統合した情報は`factory_bot wiki`を見てください
>For information on integrations with third party libraries, such as RSpec or Rails, see the factory_bot wiki.

詳細な紹介映像も持っている。Upcase(サイト名)で無料で見られる
>We also have a detailed introductory video, available for free on Upcase.

https://github.com/thoughtbot/factory_bot?tab=readme-ov-file#documentation:~:text=See%20our%20extensive,free%20on%20Upcase

構築戦略
># Build strategies
一度`factory_bot`factoryは定義された。内蔵の`build strategies`またはカスタムの`build strategy`を使って建設することができる。
>Once a factory_bot factory is defined, it can be constructed using any of the built-in build strategies, or a custom build strategy.

それらのstrategiesの全てが`ActiveSupport::Notifications`を使って`factory_bot.run_factory`インストルンメンテーションに通知し、`:name`、`:strategy`、`:traits`、`:overrides`、`:factory`キー付きのペイロードを渡せます
>All of these strategies notify on the factory_bot.run_factory instrumentation using ActiveSupport::Notifications, passing a payload with :name, :strategy, :traits, :overrides, and :factory keys.

リスト以外のメソッド(.build, .build_pair, .create, など)は義務的な引数(ファクトリーの名前の一つ）を取る。それらはオプションで特性の名前をとり、オーバーライドするハッシュの属性と特性の名前を取ることができる。最後に、それらはブロックを取ることができる。このブロックは生成されたオブジェクトを取り、更新されたオブジェクトを返す。
>The non-list (.build, .build_pair, .create, etc.) methods take one mandatory argument: the name of the factory. They can then optionally take names of traits, and then a hash of attributes to override. Finally, they can take a block. This block takes the produced object as an argument, and returns an updated object.

リストのメソッド(.build_list, .create_list, など)は二つの引数:ビルドするインスタンスの数とfactoryの名前を必要とします。オプションでオーバーライドと特性を取れる。最後にブロックを取ることができる。このブロックは引数として生成されたオブジェクト、ゼロベースのインデックスを取り、更新されたオブジェクトを返します。
>The list methods (.build_list, .create_list, etc.) have two required arguments: the name of the factory, and the number of instances to build. They then can optionally take traits and overrides. Finally, they can take a block. This block takes the produced object and the zero-based index as arguments, and returns an updated object.

ビルドする
>## build

`FactoryBot.build`メソッドは`initialize_with`に従ってクラスのインスタンスを組み立て、デフォルトでは`.new`クラスメソッドを呼ぶ。`build_list`は複数のインスタンスを構築し、`build_pair`は二つのインスタンスを構築する省略記法です。
>The FactoryBot.build method constructs an instance of the class according to initialize_with, which defaults to calling the .new class method. .build_list constructs multiple instances, and .build_pair is a shorthand to construct two instances.

`initialize_with`を呼んだ後、`after_build`フックに頼る
>After it calls initialize_with, it invokes the after_build hook.

`アソシエーション(連携)は建築戦略を使って構築される。
>Associations are constructed using the build build strategy.

https://thoughtbot.github.io/factory_bot/ref/build-strategies.html