0

我想通过与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

在我的规范文件中,我正在创建 A 和 B 的模型,如下所示:

@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

所以请帮忙。

4

1 回答 1

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
于 2013-08-22T17:16:51.467 回答