Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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 工厂未生成唯一记录_Ruby On Rails_Sequence_Factory Bot_Uniqueidentifier - Fatal编程技术网

Ruby on rails 工厂未生成唯一记录

Ruby on rails 工厂未生成唯一记录,ruby-on-rails,sequence,factory-bot,uniqueidentifier,Ruby On Rails,Sequence,Factory Bot,Uniqueidentifier,我正在将我的应用程序转换为使用Factory,而不是带有Factory\u Girl\u Rails的固定装置。我定义了以下工厂: factory :requirement do sequence(:reqTitle) {|t| "Test Requirement #{t}"} ignore do categoryName " " categoryAbbr " " end reqText "This is a test general requirement fo

我正在将我的应用程序转换为使用Factory,而不是带有Factory\u Girl\u Rails的固定装置。我定义了以下工厂:

factory :requirement do
  sequence(:reqTitle) {|t| "Test Requirement #{t}"}
  ignore do
    categoryName " "
    categoryAbbr " "
 end

  reqText "This is a test general requirement for the purpose of, um, testing things"
  status "Approved"
  factory :reqWithCat do
    category
  end
  factory :reqWithNamedCat do
    category {create(:category, catName: categoryName, catAbbr: categoryAbbr)}
  end
  factory :reqFromUserRequirement do
    user_requirement
  end
end
然后,在设置部分,我运行以下代码段:

(0..5).each do |x|
      requirement = create(:reqWithCat)
      requirement.ind_requirements {|ir| [create(:ind_requirements)]}
end
(0..5).each do |x|
    create(:reqWithNamedCat, categoryName: "User Interface", categoryAbbr: "UI")
end
然而,我的测试失败了,显然是因为没有创建记录(例如,requirements controller上的索引测试告诉我,当应该有10条记录时,返回了0条记录)。我在调试模式下运行测试,发现创建的每个需求都具有完全相同的id值。此外,每个记录都有相同的序列值


我相信重复记录无法保存,这就是为什么我得到0返回。但是,我看不出我设置的错误。我在这里遗漏了什么?

一旦我修复了用户工厂以正确地创建相关的多个工厂,然后我发现根据我在模型中定义范围的方式,我编写的工厂不正确。修复后,“坏”测试开始工作。

有人告诉您有0条记录而不是1条记录,这让我认为您可能没有重复记录的问题。这可能是一个愚蠢的问题,但您尝试过在当前调用的所有情况下调用
create
?此外,您的循环可以更简洁地标记为
5.timesdo。。。结束
,正如您在这里向我们展示的那样,您不需要块参数。这不一定是一个愚蠢的问题。我调用了include FactoryGirl::Syntax::Methods,但这并不意味着它可以工作。很遗憾,我仍然返回了0条记录。感谢5.5倍的推荐。看起来更干净。好的,下一个问题。我以前从未见过这样的嵌套工厂。您是在尝试继承,还是这种实现还有其他用途?我有多对多的关系,例如需求和类别之间的关系,所以这应该可以达到这个目的。我可能会试着回到创建基本需求上来,看看是否能让它正常工作。