thoughtbot/factory_girl — comment on commit 578036480fd98332259fb42ce11ad4933a0c0f2b
File: GETTING_STARTED.md line 628
By jferris:

The primary reason you'd need this is if some/all attributes are passed to the constructor.

factory_girl was originally written with ActiveRecord in mind. Because of this, it initializes all instances by calling `new` on your build class without any arguments. It then calls attribute writer methods to assign all the attribute values. While that works fine for ActiveRecord, it actually doesn't work for almost any pure Ruby class.

This change lets you:

* Build non-ActiveRecord objects that accept arguments to the constructor
* Use a different method to instantiate the instant
* Do crazy things like decorate the instance after it's built