gpt4 book ai didi

ruby-on-rails - 如何一步建立一个带有子工厂的父工厂以通过验证

转载 作者:行者123 更新时间:2023-11-28 20:09:04 25 4
gpt4 key购买 nike

项目必须至少同时创建一项任务以确保验证通过。这是我用来验证这一点的片段:

class Project < ActiveRecord::Base
validates :tasks, :length => { :minimum => 1 }
...
end

我面临的挑战是创建合适的工厂来使用 FactoryGirl 预先构建项目。我正在使用:

FactoryGirl.define do

factory :task do
name "Get this test passing"
project
end

factory :project do
title "Complete the application"
factory :project_with_tasks do
ignore do
tasks_count 5
end

after(:create) do |project, evaluator|
FactoryGirl.create_list(:task, evaluator.tasks_count, project: project)
end
end
end

end

现在的问题是这失败了,因为它实际上创建了项目,然后尝试创建关联的任务。错误报告为:

Failure/Error: project = FactoryGirl.create(:project_with_tasks, tasks_count: 2)
ActiveRecord::RecordInvalid:
Validation failed: Projects must have at least one task

将它变成before(:create) 意味着该项目不可引用。

如有任何帮助,我们将不胜感激!

最佳答案

我最终通过以下方式建立工厂使其通过:

project = FactoryGirl.build(:project)  
project.tasks << FactoryGirl.create(:task)
project.save

这会在保存完成之前将任务添加到项目中。

关于ruby-on-rails - 如何一步建立一个带有子工厂的父工厂以通过验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com