2012-08-06 60 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