The create()
method persists the instance of the model while the build()
method keeps it only on memory.
Personally, I use the create()
method only when persistence is really necessary since writing to DB makes testing time consuming.
e.g.
I create users to authentication with create()
because my authentication engine queries the DB.
To check if a model has an attribute the build()
method will do because no DB access is required.
it{Factory.build(:user).should respond_to(:name)}
Update
"There is one exception that build actually 'creates' when you are building associations, i.e your association are no longer in memory but persisted. Keep that in mind" – Shakes
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…