2013-08-22 2 views
0

Я хотел бы выразить через отношения с FactoryGirl. У меня есть три модели A, B и БА, где модель А не зависит, модель B выглядит следующим образом:Задание зависимости в FactoryGirl

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

И модель выглядит следующим образом:

Class A 
    include DataMapper::Resource 
    property :propn 
end 

И модель БА как следующим образом:

Class BA 
    include DataMapper::Resource 
    belong_to :a, :key=>true 
    belong_to :b, :key=>true 
end 

В моем файле спецификации я создаю модель A и B следующим образом:

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

Из-за этой модели BA, B не может быть создан, он дает ошибки. На самом деле я не знаю, как указать зависимость от A до BA, которая требуется. Другими словами, я не могу написать следующую часть, которую я четко указал ниже.

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 ...'. Вы имели в виду включить 'do'? Если да, можете ли вы указать мне какую-нибудь документацию? –

+0

Извините, этого не произойдет. – Joy

ответ

1

Вы можете использовать после (: 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