2013-08-22 3 views
0

FactoryGirl과의 관계를 통해 표현하고 싶습니다.FactoryGirl에서 종속성을 통해 지정하기

Class B 
    include DataMapper::Resource 
    property :prop1 
    property :prop2 
    ... 
    has n, :propn, :through => :ba 
end 

을 그리고 다음과 같이 모델은 다음과 같습니다 :

Class A 
    include DataMapper::Resource 
    property :propn 
end 

을 그리고 BA의 모델로입니다 다음과 같이 내가 세 가지 모델 A, B 및 모델 A는 독립적 인 BA를, B의 모델입니다 다음 :

다음과 같이 I는 모델 및 B를 만드는 오전 내 사양 파일에서
Class BA 
    include DataMapper::Resource 
    belong_to :a, :key=>true 
    belong_to :b, :key=>true 
end 

:

@a = FactoryGirl.create(:a) 
@b = FactoryGirl.create(:b) 

이 모델 BA 때문에 B를 만들 수 없으므로 오류가 발생했습니다. 사실 나는 필요한 BA를 통해 A에 대한 종속성을 지정하는 방법을 알지 못합니다. 즉, 아래에 명시된 다음 부분을 쓸 수 없습니다.

factory :c do 
    association :a 
    association :b 
end 

factory :b do |x| 
    x.prop1 <val1> 
    x.prop2 <val2> 
    ... 
    <to be filled to write depency on b through ba> 
end 

+0

'class Foo do ...'형식에는 익숙하지 않습니다. '할 '을 포함한다는 의미였습니까? 그렇다면 몇 가지 문서를 가르쳐 주시겠습니까? –

+0

죄송합니다. 오지 않을 것입니다. – Joy

답변

1

after (: create)를 사용하여 공장 출신 소녀의 연결을 설정할 수 있습니다. 나는 나의 모델 이름 중 일부를 a와 b로 대체하여 그것을 당신의 예제와 일치 시키려고 노력했다. 또한 속성을 설정할 때 | x |는 필요하지 않습니다.

factory :a_with_b, class: a do 
    quantity_needed   2 
    description    "cold" 
    event_id 1 
    guest_created    false 
    after(:create) do |a| 
     b = FactoryGirl.build(:b) 
     a.ab << b 
    end 
end 
관련 문제