I'll advocate for Fixture Replacement 2. Your default (don't care) model attributes are stored all in one place, db/example_data.rb, and provide quick valid objects. Any attributes you specify upon creation override the default attributes - meaning the data that you care about is in the test, and nothing else.
Your example data can also refer to other default models, which are represented by procs with delayed evaluation, so you can override associations easily when desired.
Version 2 provides a much cleaner definition format, while still providing the magic new_*, create_*, and default_*
methods for every model.
I would avoid any kind of "scenarios" scheme which encourages building more and more test data that's hard to read later. You can create named(custom) objects with FR2, but I've never found a need for it.
P.S. Make sure you consider your unit testing strategy as well - Fixtures and all their analogues are real objects that hit the DB, making for functional or integration tests. I'm currently using RSpec's mocking along with stub_model()
and the latest unit_record gem to disallow DB access.