3

我对 FactoryGirl 有疑问:

这是我的 2 家工厂:

FactoryGirl.define do
  factory :task do
    ...
    after(:build) do |task|
      question = FactoryGirl.create(:question)
      task.questions = [question]
    end
  end
end

FactoryGirl.define do
  factory :question do
    association :task, factory: :task
    ...
  end
end

问题工厂创建任务,任务工厂创建问题等。所以,我有一条消息:“SystemStackError:堆栈级别太深”。

如何在不破坏关联的情况下解决这个问题?

4

1 回答 1

7

您会收到“堆栈级别太深”错误,因为您正在根据彼此定义两个工厂。您不需要工厂association :task, factory: task中的线路question——关联将在您创建任务时设置。

task在你的工厂试试这个:

FactoryGirl.define do
  factory :task do
    ...
    questions { [ FactoryGirl.create(:question) ] }
  end
end
于 2012-12-12T14:39:54.323 回答