我有这些模型,我正在尝试使用factory_girl创建工厂。
class Foo < ActiveRecord::Base
belongs_to :baz
end
class Baz < ActiveRecord::Base
has_many :foos
end
我不确定如何创建工厂而不创建工厂无休止地互相呼叫的循环。
Factory.define :foo do |f|
f.after_create do |ff|
ff.baz = Factory(:baz)
end
end
Factory.define :baz do |f|
f.after_create do |ff|
ff.foos = [Factory.create(:foo)]
end
end
我意识到我可以在ff.foos = [Factory.create(:foo)]
工厂中遗漏baz
,但在我的baz
测试中,我被迫使用foo.baz
而不是仅使用baz
{1}}。我是否被迫在我的测试中从baz
工厂取出foo
对象?或者有更好的方法吗?
答案 0 :(得分:9)
因此,您需要使用该部分的语法,即。在您需要的Foo
声明中:
Factory.define :foo do |f|
f.association :baz
end
after_create
关联不需要belongs_to
。