【问题标题】:Specifying through dependency in FactoryGirl通过 FactoryGirl 中的依赖关系指定
【发布时间】:2013-08-22 14:08:00
【问题描述】:

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

所以请帮忙。

【问题讨论】:

  • 我不熟悉class Foo do ... 的格式。您的意思是包含do 吗?如果是这样,你能指点我一些文档吗?
  • 对不起不来了。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2012-02-26
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多