私の問題は非常に一般的なようですが、ドキュメントやインターネット自体に答えが見つかりませんでした。
これは、factory_girlのビルド戦略を尊重しながら、この質問has_manyのクローンのように見えるかもしれませんが、その投稿から2.5年後、factory_girlは大きく変化しました。
写真というhas_many関係のモデルがあります。これには、ビルド戦略の選択を維持する多くの関係があります。
私が電話する場合、私はスタブモデルのコレクションになることoffering = FactoryGirl.build_stubbed :offering, :stay
を期待しています。offering.photos
これを達成するために私が見つけた唯一の方法はこれです:
factory :offering do
association :partner, factory: :named_partner
association :destination, factory: :geolocated_destination
trait :stay do
title "Hotel Gran Vía"
description "Great hotel in a great zone with great views"
offering_type 'stay'
price 65
rooms 70
stars 4
event_spaces 3
photos do
case @build_strategy
when FactoryGirl::Strategy::Create then [FactoryGirl.create(:hotel_photo)]
when FactoryGirl::Strategy::Build then [FactoryGirl.build(:hotel_photo)]
when FactoryGirl::Strategy::Stub then [FactoryGirl.build_stubbed(:hotel_photo)]
end
end
end
end
それを行うためのより良い方法が存在しなければならないことを言う必要はありません。
アイデア?