2010-09-05 114 views
5

我正在實施工廠女孩作爲我的Rails應用程序中夾具的替代品。我有幾張表,我試圖用關聯來表示。然而,爲了向循環中拋出一個扭曲,除了定義關聯之外,我還需要從父級訪問子工廠的屬性。從父母工廠女孩工廠訪問子屬性

下面是什麼,我試圖做一個例子:

  • 廠:foo_bar這樣的名稱關聯到工廠:foo,它關聯到廠:巴
  • 來源:foo_bar這樣,我嘗試兩種訪問屬性:foo和:酒吧

這裏是樣本:

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>:從然後棒:foo_bar這樣,我想要知道的:酒吧的ID。

+0

我不是真正明確:foo_bar這樣的名稱是。它只是一個連接表還是它有其他屬性沒有列出? – 2010-09-05 13:56:25

+0

嗨 - 感謝您的評論。是的,我可以看到它是如何從簡化版本中混淆的。 :foo_bar具有其他屬性,只是不顯示。這不是一個連接表。 – shedd 2010-09-06 11:21:51

+0

這是我一直在尋找的線程,fyi:http://groups.google.com/group/factory_girl/browse_thread/thread/2ffdd38eb31b0727?pli=1 – shedd 2010-09-06 12:00:23

回答

0

很難說沒有型號代碼的樣子嗎?

但也許是這樣的?

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 
+0

感謝您的回覆。我認爲我的例子沒有清楚地說明完整的問題。我會修改它更清楚,但我實際上試圖做的是:foo_bar創建一個關聯的工廠,然後讓該關聯的工廠創建它關聯的工廠,但(這是我掙扎的元素與)也有:foo_bar訪問底層Factory的一個屬性。所以,:foo_bar>:foo>:bar和來自:foo_bar,我試圖得到:酒吧的ID。這是否更有意義? – shedd 2010-09-06 11:26:23

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