如何一步构建带有子工厂的父工厂以通过验证

2024-01-03

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

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(使用前将#替换为@)

如何一步构建带有子工厂的父工厂以通过验证 的相关文章

  • 如何指定运行哪个生菜场景

    如何指定运行哪个生菜场景 在使用 python lettuce 测试框架时 我经常遇到这种情况 一个场景失败 然后我想放大这个场景来修复这个场景 我们可以在功能文件中指定要运行的生菜场景吗 您可以使用标签进行所需的测试 例如 Scenari
  • Rails - 使用 %W

    我有以下效果很好的 def steps w hello billing confirmation end steps first 但我想这样做 def step title w Upload a photo Billing Info Con
  • Rails 中的 plusDomains.circles.addPeople 的 Google API 产生 403 Forbidden

    Using Google API Ruby 客户端 https github com google google api ruby client class GooglePlus def self follow contact contac
  • Espresso - 检查使用按钮按下意图打开哪个活动?

    是否可以跟踪按下某个按钮后打开了哪个 Activity 我有一个测试 其中当单击 按下按钮时 it 向服务器发送请求 直到发送请求时 它打开一个活动 验证是否执行成功在测试中 我需要检查打开的 Activity 是什么 我的测试示例 检查
  • Rails validates_与模型的错误消息相关

    我在模型中使用 validates linked 来使用其他模型的验证代码 问题是验证失败的消息是 is invalid 我想将模型验证失败的实际描述错误冒泡到顶部 我发现这个问题 验证与模型的错误消息关联 https stackoverf
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 应该使用 Rspec Gem 在 Belong_to 测试中返回“String:Class 的未定义方法‘reflect_on_association’”

    在我的 Rails 应用程序中 我有我的模型Request Service and ServiceRequest 在我的 models rb 文件中 我有 request rb class Request lt ApplicationRec
  • 多租户 Rails 应用:不同技术的优缺点是什么?

    我最初是为一位客户编写 Ruby on Rails 应用程序的 现在 我正在更改它 以便它可以用于不同的客户 我的最终目标是某些用户 不是我 可以单击按钮并创建一个新项目 然后生成所有必要的更改 新架构 新表 代码处理 无需任何人需要我编辑
  • Rails 应用中静态页面的最佳实践

    我正在为当地企业开发一个 ruby on Rails 应用程序 这些页面是 静态 的 但可以通过我为它们构建的后端 CMS 进行更改 是否有为静态页面创建控制器的最佳实践 现在我有一个带有所有静态路由的站点控制器 如下所示 路线 rb ge
  • 如何使 Active Record 连接返回唯一的对象?

    我有一个简单的查询需求 查找自2013年1月1日以来下过订单的用户列表 在 SQL 中 这是一个非常简单的查询 但我正在使用 Rails 和 Active Record 所以我写道 User joins orders where order
  • 处理rails应用程序中的rack_throttle异常

    当超出速率限制时 如何处理由rack throttle gem 生成的错误 现在我只收到包含以下内容的回复 Internal Server Error undefined method each for 403 Forbidden Rate
  • 如果不选择 Updated_at 属性,则无法更新 Rails 4 中的模型

    我正在从 Rails 3 2 13 升级到 4 并遇到更新模型的问题 我正在尝试仅更新模型上的单个属性 其中我只有 id 我还需要验证和回调 这在 Rails 3 中运行良好 但在 Rails 4 中遇到了麻烦 在 Rails 4 中 如果
  • CanCan load_and_authorize_resource 触发禁止属性

    我有一个使用强参数的标准 RESTful 控制器 class UsersController lt ApplicationController respond to html js def index users User all end
  • 使用 Capistrano 无法开始延迟的作业

    我无法使用 capistrano 配方启动延迟的作业流程 这是我收到的错误 usr local lib ruby gems 1 9 1 gems delayed job 2 1 1 lib delayed command rb 62 in
  • 我可以在 render.js 上执行的视图中使用 CoffeeScript 吗?

    我需要做什么才能在 Rails JS 视图中使用 CoffeeScript 例如 def index format js render layout gt false end 我需要做什么才能让 Rails 使用index js coffe
  • Rails:如何重新启动 sidekiq?

    我正在使用 sidekiq gem 在后台运行 API 调用 我在守护进程中运行 sidekiq 如下所示 bundle exec sidekiq d 现在我对我的方法做了一些更改 所以我想重新启动 sidekiq 我尝试使用以下命令杀死
  • render_views 在 rspec 中做什么?

    我对 rspec 很陌生 对 Rails 也很陌生 在为控制器编写测试用例时 我注意到render views经常使用 这是做什么的 如果我不调用它会发生什么 它呈现控制器规范中的视图 如果不放置 render views 视图将不会渲染
  • 使用 Active Record 信誉系统 gem,当我按投票排序时不会发生排序

    遵循 RailsCast 的信誉系统 gem 我将以下代码添加到我的 microposts controller 中 def index microposts Micropost paginate page params page find
  • 更改 Rails 中的默认错误消息

    我们的客户决定 他们希望整个应用程序中所有空白 AR 错误消息从 不能为空 更改为 必须完成 Rails 最简单的方法是什么 Use config locales en yml 具体来说 将以下内容放入该文件中 en activerecor
  • 处理不兼容的字符编码:UTF-8 和 ASCII-8BIT

    我在生产中遇到不兼容的字符编码错误 我尝试在本地重现它 但没有成功 这是错误消息 A ActionView Template Error occurred in controller name action name incompatibl

随机推荐

  • React Native Lottie - 动画结束时反转

    Context 我是lottie react native的新手 并且已经成功实现了我的第一个动画 constructor props super props this state progress new Animated Value 0
  • 无限墙算法中的门

    问题 门在墙上你面对的是一堵向两个方向无限延伸的墙 墙上有一扇门 但你不知道有多远 也不知道在哪个方向 只有当你靠近门时你才能看到门 设计一种算法 使您能够通过最多步行 O n 步到达门 其中 n 是您的初始位置和门之间的 您未知的 步数
  • 在哪里获取 csv 样本数据? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 作为开发的一部分 我需要处理一些 csv 文件 重要的是我正在用 java 编写一个超快速的 CSV 解
  • pdf图像色彩空间麻烦ios

    EDIT我一直在使用的pdf文件显然是 indesign 格式 无论这意味着什么 因此没有颜色配置文件 有谁知道如果可能的话我如何自己添加配置文件 编辑结束 预先感谢任何人可以为解决此问题提供帮助 首先让我告诉你 我在 IOS 开发方面是个
  • 客户端:访问 Windows Azure 驱动器?

    我正在开发一个 Azure 应用程序 其中一部分涉及用户浏览在线文件系统 为此 我尝试使用 Windows Azure 驱动器 但我不知道如何从客户端访问它 或者如何使其在服务器端可访问 目前 我只知道如何制作驱动器 CloudStorag
  • Docker推送错误“413请求实体太大”

    我设置了registry v2并使用nginx作为反向代理 当我将图像推送到注册表时 出现错误413 Request Entity Too Large 我已在 nginx conf 中将 client max body size 修改为 2
  • 使用起始 X/Y 和起始+扫描角度获取 ArcSegment 中的终点

    有没有人有一个好的算法来计算终点ArcSegment 这不是圆弧 而是椭圆弧 例如 我有这些初始值 起点 X 0 251 起点 Y 0 928 宽度半径 0 436 高度半径 0 593 起始角度 169 51 扫掠角 123 78 我知道
  • nginx 重定向循环,从 url 中删除 index.php

    我想要任何请求 例如http example com whatever index php 执行 301 重定向到http example com whatever 我尝试添加 rewrite index php 1 permanent l
  • 在 Java Web 应用程序中运行常规后台事件

    在播客 15 中 Jeff 提到他在 Twitter 上谈到了如何在后台运行常规事件 就好像它是一个正常功能一样 不幸的是我似乎无法通过 Twitter 找到它 现在我需要做类似的事情 并将这个问题抛给大众 我当前的计划是 当第一个用户 可
  • android.os.SystemProperties 在 Junit 测试期间不保存值

    android os SystemProperties 不能从外部使用 因此反射用于设置和获取操作 看android os SystemProperties 在哪里 https stackoverflow com questions 264
  • 如何使用 Boost Filesystem 忽略隐藏文件(以及隐藏目录中的文件)?

    我使用以下命令递归地迭代目录中的所有文件 try for bf recursive directory iterator end dir dir end dir const bf path p dir gt path if bf is re
  • 我的 Sublime 首选项文件在哪里?

    我正在使用优秀的Sublime Text 3 编辑器 http www sublimetext com 3在我的 Mac 上 我想关闭自动换行功能 所以我去了Preferences gt Settings Default 这将打开一个设置文
  • 错误C2995:函数模板已被定义

    此代码产生 17 错误 C2995 函数模板已被定义 在添加 include set h 标头之前存在一组单独的错误 有一个与此相关的私有 cpp 和 h 文件 File private set cpp Last modified on T
  • 如何告诉castor将空字段编组到空标签?

    我正在编组一个可以将某些字段设置为空的对象 我使用带有 xml 映射文件的 Castor 进行配置 我正在编组的课程是这样的 class Entity private int id private String name private S
  • 为什么我的 eclipse 控制台不以 StatE 启动

    我刚刚安装了带有 StatET 的 Eclipse 一切都是标准的 现在当我打开 StatET 透视图时 我的控制台似乎没有加载 有什么想法吗 我也使用 StatEt 它在这里有相同的行为 要启动 R 控制台 我必须从 运行按钮菜单 中选择
  • android.view.InflateException:错误膨胀类 android.widget.EditText 华硕 Android 5

    I m getting constant reports of this crash happening but it only happens on asus devices with android 5 as the image bel
  • 将重叠的多边形合并为单个多边形

    我有一个数据集 其中包含多个多边形的 x 和 y 坐标 例如 df lt data frame xpol c 0 304147897 0 272762377 0 239435395 0 204166952 0 166957048 0 127
  • 我需要为 Keras VGG16 预训练权重吗?

    作为背景 我对机器学习领域相对较新 我正在尝试一个项目 目标是对 NBA 比赛中的比赛进行分类 我的输入是 NBA 比赛中每次比赛的 40 帧序列 我的标签是给定比赛的 11 个包罗万象的分类 该计划是获取每个帧序列并将每个帧传递到 CNN
  • AngularJS 2错误未定义索引1

    我正在尝试实现 MeanStack 项目 当我尝试点击更新按钮时 出现此错误 错误 请求的路径在索引 1 处包含未定义的段 有更新服务 updateLocation id data return new Promise resolve re
  • 如何一步构建带有子工厂的父工厂以通过验证

    项目必须同时创建至少一项任务 以确保验证通过 这是我用来验证这一点的片段 class Project lt ActiveRecord Base validates tasks length gt minimum gt 1 end 我面临的挑