has_many и принадлежит_ к ассоциациям в factory_girl - PullRequest
13 голосов
/ 06 июля 2011

У меня есть эти модели, которые я пытаюсь создать фабрики для использования 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. Я вынужден использовать объект baz, извлекая его из фабрики foo в моих тестах? Или есть лучший способ?

1 Ответ

9 голосов
/ 06 июля 2011

См. Раздел Ассоциации Руководство по началу работы

Добавлена ​​

Итак, вам нужно использовать этот синтаксис из этого раздела, т.е. в вашей Foo декларации вам нужно:

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

Нет after_create, необходимый для belongs_to ассоциации.

...