TETOYGIRL:(:创建)动作未被识别



我正在尝试创建我的factorygirl工厂,以便当我调用 FactoryGirl.create(:model_a)时,任何 dependenty for model_a 创建并分配给该的。Model_a工厂。但是,由于某种原因,我的方法无法正常工作,我无法完全弄清楚为什么。

在我的工厂文件中,这就是我所拥有的:

FactoryGirl.define do
    factory :model_a do
        before(:create) do
            FactoryGirl.create(:model_b)
        end
        model_b {ModelB.first}
    end
end

现在,当我运行FactoryGirl.create(:model_a)时,我希望这首先创建Factory model_b (因为在(:create( call之前 call(,然后返回到创建Factory model_a 并将工厂 model_b 分配给 model_b model_a> model_a

但是,我正在收到错误model_b must exist, model_b cannot be blank

为什么未创建工厂model_b,以便我可以使用它?

您需要在before(:create)块内设置model_amodel_b之间的关联。例如:

FactoryGirl.define do
  factory :model_a do
    # add model_a attributes as needed
    before(:create) do |model_a|
      model_a.model_b = ModelB.first || FactoryGirl.create(:model_b)
    end
  end
end

或者,按OP的评论:

factory :model_a do
  # add model_a attributes as needed
  model_b { ModelB.first || FactoryGirl.create(:model_b) }
end

相关内容

  • 没有找到相关文章

最新更新