代码之家  ›  专栏  ›  技术社区  ›  shedd

从父工厂访问子属性

  •  5
  • shedd  · 技术社区  · 16 年前

    我正在实现Factory Girl,以替换Rails应用程序中的固定装置。我尝试使用关联来表示几个表。然而,为了在循环中引入一个纠结,除了定义关联之外,我还需要从父工厂访问子工厂的属性。

    下面是我尝试做的一个例子:

    • Factory:foo\u bar与Factory:foo关联,后者与Factory:bar关联
    • 从:foo_bar,我尝试访问:foo和:bar的属性

    以下是样本:

    Factory.define :bar do |e|
      e.name          "Bar"
    end
    
    Factory.define :foo do |e|
      e.bar         {|b| b.association(:bar)}
    end
    
    Factory.define :foo_bar do |b|
      f = b.association(:foo)
      b.foo_id      foo.id
      b.bar_id      foo.bar_id
    end
    

    我已经阅读了很多教程和其他问题,还没有看到任何关于如何做到这一点的例子。有什么想法或其他方法可以得到同样的结果吗?


    编辑

    基于几个问题,这里有一些我原本应该包括的澄清。。。

    :foo_bar不是联接表,而是具有自身其他属性的模型。

    这就是我真正想要实现的目标:

    • have:foo_bar创建关联工厂
    • 然后让关联工厂创建它的关联工厂

    那么,如果:foo_bar>:foo>:酒吧然后从:foo_酒吧,我正在尝试获取:酒吧的ID。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Jon Wood    15 年前

    Factory.define :foo do |f|
      f.name "Foo"
      f.association :foo
      f.after_build do |obj|
        obj.foo_bar = obj.foo.bar
      end
    end
    
        2
  •  0
  •   house9    16 年前

    但也许是这样的?

    Factory.define :bar do |f|
        f.name "Bar"
        f.association :foo_bar  
    end
    
    Factory.define :foo do |f|
        f.name "Foo"
        f.association :foo_bar  
    end
    
    Factory.define :foo_bar do |f|
        f.association :foo
        f.association :bar      
    end
    
    推荐文章