Traits
Traits allow you to group attributes together and then apply them to any factory.
factory :user, aliases: [:author] factory :story do title "My awesome story" author trait :published do published true end trait :unpublished do published false end trait :week_long_publishing do start_at { 1.week.ago } end_at { Time.now } end trait :month_long_publishing do start_at { 1.month.ago } end_at { Time.now } end factory :week_long_published_story, traits: [:published, :week_long_publishing] factory :month_long_published_story, traits: [:published, :month_long_publishing] factory :week_long_unpublished_story, traits: [:unpublished, :week_long_publishing] factory :month_long_unpublished_story, traits: [:unpublished, :month_long_publishing] endTraits can be used as attributes:
factory :week_long_published_story_with_title, parent: :story do published week_long_publishing title { "Publishing that was started at #{start_at}" } endhttps://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#traits