Если я правильно вас понял, вы хотите сделать это, но с более кратким синтаксисом:
booking_item = Factory(:booking_item, :people => 4)
booking = Factory(:booking, :booking_item => booking_item)
Потому что вы можете ярлык это так:
def with_assocs factory, assocs_hashes = {}, attrs = {}
assoc_models = Hash[ assocs_hash.map { |k, v| [k, Factory(k, v)] } ]
Factory factory, attrs.merge(assoc_models)
end
И использовать какэто:
@booking = with_assocs :booking, :booking_item => {:people => 3}
@booking.should be_valid
В плагине active_factory с аналогичными определениями фабрики это будет выглядеть так:
models { booking - booking_item(:people => 3) }
booking.should be_valid
К сожалению, я еще не реализовал интеграцию с factory_girl.Хотя, если вы заинтересованы, любой вход очень приветствуется.