When modeling complex business domains, not 3 model blog software, fixtures quickly become a quagmire. What’s the size of your domain? Kevin was working on a project with 180 models. This quickly became unworkable even with only 1 fixture file per model. Fixtures don’t scale well. Scenarios are also problematic as now you have to maintain a directory hierarchy of fixtures.
Use Data Generation instead
# Define Factory.define :user do |f| f.first_name 'John' f.last_name 'Doe' end # use user = Factory(:user)
Reopens your ActiveRecord class and adds generators for each attribute.
# define class User << ActiveRecord::Base generator_for :username, :method => :next_user generator_for :email, :start => 'firstname.lastname@example.org' do |prev| user, domain = prev.split('@') user.succ + '@' + domain end end # use @user = User.generate!
About the Author