Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails/Factory Girl:相互存在验证_Ruby On Rails_Factory Bot - Fatal编程技术网

Ruby on rails Rails/Factory Girl:相互存在验证

Ruby on rails Rails/Factory Girl:相互存在验证,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,我在两个rails模型“Project”和“Step”之间有一个关联,因此一个项目有许多步骤。一个步骤需要一个项目id,而一个项目至少需要一个步骤才有效……我想知道如何在factory girl中创建此步骤而不出现递归问题 目前,我的工厂是这样的: factory :project do #... steps { |s| [s.association(:step)] } end factory :step do #... association :project end it

我在两个rails模型“Project”和“Step”之间有一个关联,因此一个项目有许多步骤。一个步骤需要一个项目id,而一个项目至少需要一个步骤才有效……我想知道如何在factory girl中创建此步骤而不出现递归问题

目前,我的工厂是这样的:

factory :project do
  #...
  steps { |s| [s.association(:step)] }
end

factory :step do
  #...
  association :project
end
it "must have a step to be valid" do
  expect(FactoryGirl.create(:project)).to be_valid
end
当然,由于递归关联,返回“堆栈级别太深”错误。问题是,我需要填充这两个值


感谢您的建议。

假设这是您的模型:

class Project < ActiveRecord::Base
  has_many :steps
end

class Steps < ActiveRecords::Base
  belongs_to :project
  validates :steps, :presence => true
end
我是从臀部开枪,如果这不起作用,很抱歉。无论如何,我认为这是总的想法

it "must have a step to be valid" do
  expect(FactoryGirl.create(:project)).to be_valid
end