通过FactoryGirl中的依赖项指定

时间:2013-08-22 14:08:00

标签: ruby-on-rails factory-bot rspec-rails ruby-datamapper

我想通过与FactoryGirl的关系来表达。我有三个模型A,B和BA,其中模型A是独立的,B的模型如下:

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

A的模型如下:

 Class A 
   include DataMapper::Resource
   property :propn
 end

BA的模型如下:

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

在我的spec文件中,我按如下方式创建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

所以请帮忙。

1 个答案:

答案 0 :(得分: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