5

我正在实施 Factory Girl 来替代我的 Rails 应用程序中的固定装置。我有几个表,我试图用关联来表示。然而,为了在循环中抛出一个扭结,除了定义关联之外,我还需要从父工厂访问子工厂的属性。

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

  • Factory :foo_bar 关联到 Factory :foo,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 不是连接表,而是具有自身其他属性的模型。

这就是我真正想要完成的事情:

  • 有 :foo_bar 创建一个关联的工厂
  • 然后让关联的工厂创建它的关联工厂
  • (这是我正在努力解决的元素) :foo_bar 从底层工厂访问属性

所以,如果 :foo_bar > :foo > :bar 然后从 :foo_bar,我试图获取 :bar 的 ID。

4

2 回答 2

4

我正在使用 after_build 钩子来处理这样的情况:

Factory.define :foo do |f|
  f.name "Foo"
  f.association :foo
  f.after_build do |obj|
    obj.foo_bar = obj.foo.bar
  end
end
于 2010-11-05T15:40:54.440 回答
0

Hard to tell how it should look without the model code?

but maybe something like this?

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
于 2010-09-05T15:32:11.890 回答