skip_create, to_create, and initialize_with
The skip_create
, to_create
, and initialize_with
methods control how
factory_bot interacts with the build strategies.
These methods can be called within a factory
definition block, to scope their
effects to just that factory; or within FactoryBot.define
, to affect global
change.
initialize_with
The initialize_with
method takes a block and returns an instance of the
factory's class. It has access to the attributes
method, which is a hash of
all the fields and values for the object.
The default definition is:
initialize_with { new }
to_create
The to_create
method lets you control the FactoryBot.create
strategy. This
method takes a block which takes the object as constructed by
initialize_with
, and the factory_bot context. The context has additional
data from any transient
blocks.
The default definition is:
to_create { |obj, context| obj.save! }
The skip_create
method is a shorthand for turning to_create
into a no-op.
This allows you to use the create
strategy as a synonym for build
, except
you additionally get any create
hooks.