项目必须同时创建至少一项任务,以确保验证通过。这是我用来验证这一点的片段:
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
这会在保存完成之前将任务添加到项目中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)