我正在实现 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 不是一个join table,而是一个模型,自带其他属性。
这就是我真正想要完成的:
- 让 :foo_bar 创建一个关联的工厂
- 然后让关联的工厂创建它的关联工厂
- (这是我正在努力解决的元素)让 :foo_bar 从底层工厂访问属性
所以,如果 :foo_bar > :foo > :bar 那么我会从 :foo_bar 获取 :bar 的 ID。
最佳答案
我正在使用 after_build 钩子(Hook)来处理这样的情况:
Factory.define :foo do |f|
f.name "Foo"
f.association :foo
f.after_build do |obj|
obj.foo_bar = obj.foo.bar
end
end
关于ruby-on-rails - 从父 Factory Girl 工厂访问子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646212/