factory_girl中的has_many和belongs_to关联

时间:2011-07-06 17:49:02

标签: ruby-on-rails ruby unit-testing factory-bot

我有这些模型,我正在尝试使用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对象?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:9)

请参阅the Getting Started guide

关联部分

因此,您需要使用该部分的语法,即。在您需要的Foo声明中:

Factory.define :foo do |f|
  f.association :baz
end

after_create关联不需要belongs_to