2012-01-11 2 views
1

私は電子カタログWebサイトを構築しています。その中核はカタログモジュールです。それぞれ20種類のカテゴリがあり、サブカテゴリは5つのサブカテゴリーに分かれています。FactoryGirl - テストを実行する前にデータベースのカテゴリエントリの階層を生成する方法は?

私は親カテゴリ&を作成し、FactoryGirlを使用して同じ親に関連付けられた少なくとも2つのサブカテゴリを作成する方法を理解しようとしています。ここで

は、私がこれまで持っているものです。

Factory.define :parent_category do |f| 
    f.name "MetalWork" 
end 

Factory.define :child_category do |f| 
    f.name "Wedling" 
    f.association :parent_category 
    f.metatitle "" 
    f.metadescription "" 
end 

私はその後、使用して2つのchild_categoryモデルを生成があれば、子カテゴリ名に& SEOデータを生成するためのシーケンスを使用して考えています:

FactoryGirl.build_list(:child_category, 2) 

2つの別個の親カテゴリが作成されますが、これは私が望むものではありません。

子カテゴリモデルで保存されているさまざまなSEOデータが両方とも正しいページに表示されるようにする必要があるため、少なくとも2つの子カテゴリが重要です。

誰でもこれを達成する方法を知っていますか?私はこれがおそらく非常に初心者の質問、任意の助けをありがとうございます知っている!

parent = Factory(:category, :name => "Test Category") 
FactoryGirl.build_list(:child_category, 2, :parent_category => parent) 

を参照してください:それはあまりにもbuild_listコールのために行く -

答えて

0

私はあなたが属性のいずれかを上書きするために、任意の工場出荷時の呼び出しにハッシュを渡すことができ

# spec/support/factories.rb 
FactoryGirl.define do 
    factory :parent_category do 
    name 'MetalWork' 
    end 

    factory :child_category do 
    name 'Wedling' 
    metatitle '' 
    metadescription '' 
    end 
end 

# some_controller_spec.rb 
before :each do 
    @parent = Factory :parent_directory 
    (5 + rand(26)).times do 
    # replace :parent_id with whatever attribute 
    # you have to store parent category 
    @child = Factory :child_directory, :parent_id => @parent.id 
    # next you can fabricate your products with :category => @child 
    # ... 
    end 
end 
1

のようなもので開始したいですdocsの「複数のレコードの作成と作成」のセクションの例を参照してください。

関連する問題