Если вас беспокоит СУХОСТЬ ваших тестов, вы можете рассмотреть созданный мной плагин active_factory В нем вы можете определить фабрику следующим образом:
factory :discount_user, :class => User do
admin false
hashed_password "226bc1eca359a09f5f1b96e26efeb4bb1aeae383"
is_trader true
name "deadbeef"
salt "21746899800.223524289203464"
discount_rate { DiscountRate.make(:rate => 20.00) }
end
Другой вариант - добавить скидку внутри теста:
models { discount_rate - user - ... }
Это создаст связь между двумя моделями. Таким образом, вы можете сохранить свои характеристики СУХИМ, избегая при этом создания большого количества фабрик.
Извините, если я не отвечаю точно на ваш вопрос