2012-08-06 103 views
1

當存在關聯模型時,已知在兩個模型中指定關聯都會創建循環依賴關係,並導致「堆棧級別太深」錯誤。那麼指定關係的正確位置是什麼?請看看這些簡單的關聯:具有關聯模型的工廠

class Patient 
    has_many :doctors, :through => :join_model 
end 

class Doctor 
    has_many :patients, :through => :join_model 
end 

class User 
    has_many :posts 
end 

class Post 
    belongs_to :user 
end 

在工廠對這些模型中,哪一個是持有協會的權利的地方嗎?

+0

這兩個例子有什麼共同點?我不明白... – phoet 2012-08-06 11:14:28

+0

@phoet:兩個例子都有關聯。一個與「有很多通過」,另一個與「has_many」。我的問題是,如果您爲每個示例創建工廠,那麼哪個工廠將是指定關係的正確位置? – Emil 2012-08-06 11:20:03

回答

2

沒有在factory_girl自述有一個has_many關聯的例子的部分:https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations

我認爲這裏沒有金科玉律。我通常有一個默認的工廠模型,有一個簡單的或沒有關係設置,然後我有特殊的工廠,如:user_with_posts,用於各種相關的測試。 我也經常在自己的測試中自己構建它們create(:user, posts: [create(:some_special_post)])

+0

這是我一直在尋找的文檔!謝謝@phoet。 – Emil 2012-08-06 11:40:24