2017-03-31 19 views
1

です。私が持っている問題は、belongs_toとhas_manyとの関係に固有です。has_manyの関係には少なくとも1つのアソシエーションが必要です。この要件は、私の工場がモデルレベルの検証に失敗し、作成されない原因となっています。belongs_to/has_manyアソシエーションを持つFactoryGirlアソシエーションの最小値は

マイグループモデル

Group < ActiveRecord::Base 
    has_many :organizations, dependent: nullify 
    # commenting out the following line will make the tests pass 
    validates :organizations, presence: true 
    ... 
end 

組織モデル

Organization < ActiveRecord::Base 
    belongs_to :group 
    ... 
end 

組織工場

FactoryGirl.define do 
    factory :organization 
    name "test organization" 
    end 
end 

そして最後に、問題の子:

グループ工場

と私のテストでは、私は工場出荷時のインスタンスを宣言:

describe "something happens with a Group" do 
    let(:group) { FactoryGirl.create :group } 

    it "should work" do 
    ... 
    end 
end 

私のテストが返すエラーは様々であるが、FactoryGirlに、一般的に、すべてのポイントは、Group工場のインスタンスを作成することができません。例えばこのThoughtbotポストから

# when a test relies on creating an instance of 'Group' 
ActiveRecord::RecordInvalid: 
    Validation failed: Organizations can't be blank 

私は私のグループの工場を作成するには(コールバック)を使用している方法があるhttps://robots.thoughtbot.com/aint-no-calla-back-girl

多くの類似の記事がありますが、私はだけでなく、発見したことを、それらのすべてThoughtbotのドキュメントには、この特定のユースケースは言及されていません。前もって感謝します。

答えて

2

はどのように

FactoryGirl.define do 
    factory :group do 
    name 'test group' 
    organizations { [association(:organization)] } 
    end 
end 

のようなものについての主なアイデアは、それらを保存する前に必要なオブジェクトを構築することです。さらに必要な場合は、build_listもお試しください。

+0

Ahh!それはうまくいった!うわー、私はこのテーマのバリエーションをたくさん疲れましたが、私の構文は間違っていました。素晴らしい、ありがとう! – sammms

関連する問題