FactoryGirl 覆盖关联对象的属性

2024-02-21

这可能很简单,但我在任何地方都找不到例子。

我有两个工厂:

FactoryGirl.define do
  factory :profile do
    user

    title "director"
    bio "I am very good at things"
    linked_in "http://my.linkedin.profile.com"
    website "www.mysite.com"
    city "London"
  end
end

FactoryGirl.define do 
  factory :user do |u|
    u.first_name {Faker::Name.first_name}
    u.last_name {Faker::Name.last_name}

    company 'National Stock Exchange'
    u.email {Faker::Internet.email}
  end
end

我想要做的是在创建配置文件时覆盖一些用户属性:

p = FactoryGirl.create(:profile, user: {email: "[email protected] /cdn-cgi/l/email-protection"})

或类似的东西,但我无法得到正确的语法。错误:

ActiveRecord::AssociationTypeMismatch: User(#70239688060520) expected, got Hash(#70239631338900)

我知道我可以通过先创建用户然后将其与配置文件关联来做到这一点,但我认为必须有更好的方法。

或者这会起作用:

p = FactoryGirl.create(:profile, user: FactoryGirl.create(:user, email: "[email protected] /cdn-cgi/l/email-protection"))

但这似乎过于复杂。是否没有更简单的方法来覆盖关联的属性? 正确的语法是什么?


根据 FactoryGirl 的创建者之一的说法,您无法将动态参数传递给关联助手(在 FactoryGirl 关联的设置属性中传递参数 https://stackoverflow.com/questions/10434572/pass-parameter-in-setting-attribute-on-association-in-factorygirl).

但是,您应该能够执行以下操作:

FactoryGirl.define do
  factory :profile do
    transient do
      user_args nil
    end
    user { build(:user, user_args) }

    after(:create) do |profile|
      profile.user.save!
    end
  end
end

然后你几乎可以像你想要的那样调用它:

p = FactoryGirl.create(:profile, user_args: {email: "[email protected] /cdn-cgi/l/email-protection"})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FactoryGirl 覆盖关联对象的属性 的相关文章

  • Ruby 空白:{ :a => 1 } 比 {:a => 1} 更好吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看看其他人的代码 在花括号块内包含额外的空格似乎很常见 这是有原因的吗 对我来说 这似乎增加了额外的击键 从而增加了丑陋 特别是当事情嵌套时 l
  • Rails3 SQL 日志记录输出在单独的文件中

    我希望将所有 ActiveRecord SQL 日志记录重定向到不同的文件中 将其放在控制台或 log development log 中有点混乱 怎么做 我希望将其放在 log development sql log 文件中 Thanks
  • 使用 ruby​​ Net::SSH 通过 sudo 读取远程文件

    我必须读取我有权 sudo 读取的远程文件的内容 猫 少或尾巴 我将在 Ruby 中执行此操作 因此我认为应该使用 Net SSH 来执行此操作 该文件是一个日志文件 因此可能会很大 这是我现在正在尝试的代码 require rubygem
  • 是否可以在 proc 中查看 ruby​​ 代码?

    p Proc new puts ok 是否可以在过程中看到 ruby 代码 inspect返回内存位置 puts p inspect
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum
  • 字符串被两个不同的分隔符分割

    我有这样的字符串 some dasd dasd dasdas dasdas dasd das dsad 我需要用两个不同的符号将字符串拆分为数组 and 所以我想得到数组 some dasd dasd dasdas dasdas dasd
  • 有没有办法编写一个匹配除文件夹中的文件之外的所有文件的全局模式?

    我需要编写一个文件 glob 它将匹配除特定文件夹中包含的文件之外的所有文件 例如 除了高级文件夹中包含的文件之外的所有文件 foo 我已经到达以下区域 foo 然而 这个 glob 似乎与 Ruby 中的任何文件都不匹配File fnma
  • 数组中 1 到 100 个奇数

    Ruby 中有什么很酷的方法可以创建一个 1 到 100 且只有奇数条目 1 3 等 的数组 我现在有一个循环 但这显然不是一个很酷的方法 有什么建议么 我当前的代码 def create 1 to 100 odd array array
  • 为 .API 文件启用自动完成功能?

    有谁知道如何使用 N 站点上提供的 API 文件在 Notepad 中自动完成工作 在 API 文件夹中具有 XML 自动完成文件的语言中 自动完成功能工作得很好 但对于使用 API 文件的语言 ruby AutoIt 等 完全不起作用 根
  • Ruby On Rails 与 Windows Vista - 最佳设置? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您认为 Win Vista 环境中 RoR 的最佳设置是什么 我尝试过 radrails eclipse 插件 它对我来说似乎太庞大了 我也开始
  • sinatra 应用程序在运行时无法启动

    我使用的是 Ubuntu 10 10 Ruby 1 9 2 无论我做什么 我都无法在本地计算机上启动 sinatra 应用程序 你好 rb require sinatra get do Hello World end ruby hello
  • 如何将 STDOUT 捕获到字符串?

    puts hi puts bye 我想存储到目前为止代码的 STDOUT 在本例中 hi nbye 到变量中说 结果 并打印它 puts result 我这样做的原因是我已将 R 代码集成到我的 Ruby 代码中 当 R 代码运行时 其输出
  • 在多个模型中与 has_many :through 建立关联

    请帮助了解该怎么做 project payments有这棵树 Project Stages Costs Payments 项目 rb has many stages has many costs through gt stages stag
  • 从 Rails Helper 返回多个标签的最佳方法是什么?

    我想创建一个隐藏字段并在一个助手中创建一个链接 然后将两者输出到我的 erb 应该输出结果 link to something a path form hidden field something tableize value gt som
  • 迭代比线性代码慢吗?哪一个更可取?

    最近几天我脑子里一直有一个问题 在用 ruby 编写代码时 线性代码是否比迭代更快 更好 让我举个例子 有一个用于相同功能的代码块以两种不同的方式编写 Way 1 dog cat tiger each do pet name puts I
  • Ruby `split':UTF-8 中的无效字节序列(ArgumentError)

    我正在尝试填充电影对象 但是在解析时u item文件我收到此错误 split UTF 8 中的无效字节序列 ArgumentError File open Data u item r do infile while line infile
  • 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么?

    我的工作要求我为某些测试自动生成电子邮件 我一直在四处寻找 但一直未能找到可以快速实施的合理解决方案 它需要在 Outlook 中 而不是其他邮件服务器中 因为我们有一些奇怪的身份验证规则 并且我们需要保存草稿的选项 而不仅仅是发送消息 显
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • Ruby:基于控制台的菜单

    我有一个名称和 URL 数组 并希望以向上 向下滚动菜单的形式向用户呈现名称列表 基本上是什么dialog允许在外壳内 我调查过ncurses ruby rdialog and HighLine但它们似乎要么作为一个项目被放弃 要么甚至从它

随机推荐

  • React Native:如何导出带有返回值的方法?

    在 React Native 中导出带有返回值的方法的最佳方法是什么 我知道有RCT EXPORT METHOD 但这仅适用于以下方法 void 因此不要返回任何东西 最好我不需要导出整个类 只需导出一些方法 另一种选择是进行回调 但我想尽
  • sklearn 逻辑回归“ValueError:找到的数组暗淡为 3。预计估计器 <= 2。”

    我尝试解决此笔记本中的问题 6 https github com tensorflow examples blob master courses udacity deep learning 1 notmnist ipynb 问题是使用 50
  • Android 手机和模拟器中的mapView不同

    关于应用程序 这是一个简单的应用程序 可以查找用户当前位置 问题 该应用程序在模拟器上运行良好 请参见图片 但在手机中它没有显示MapView 请看图片 请告诉我手机出了什么问题 在手机中 它只下载巨大的 20 MB 数据 但不显示实际地图
  • Android:倒数计时器,例如10:00 到 00:00?使用 OnclickListener 到 TextView?

    我正在尝试制作一个从 10 分钟开始的倒计时器 类似于篮球记分牌 10 00 到 00 00 我该怎么做呢 这是我的代码 private TextView Timer Handler handler new Handler private
  • 如何在 PhpStorm 中启用 git 注释

    这是一个愚蠢的问题 但我一生都无法弄清楚如何在 PhpStorm 中启用 git 注释 通常您只需右键单击行号装订线并选择Annotate它显示有关谁提交了该代码 提交时间以及 github 上提交的链接的信息 但是 当我右键单击时 Ann
  • 对不同组使用 ssh 密钥对的最佳实践?

    我正在学校外的一家公司做一些工作 他们需要我的公共 ssh 密钥 我已经生成了用于 github 的公共 ssh 密钥 我前段时间设置了这个 如果我打开 id rsa pub 文件 我会看到它嵌入了我的学校电子邮件地址 现在我想知道是否通常
  • 构建 docker 镜像时是否可以显示“WORKDIR”?

    我们有一个问题WORKDIR当我们构建 docker 镜像时 是否可以打印的值WORKDIR 我们尝试了 ECHO WORKDIR 但没有这样的指令ECHO Docker 没有内置方法来打印WORKDIR在构建期间 您可以通过以下命令检查图
  • VS 2010 多项目模板:项目间引用

    我目前正在开发一个多项目模板 我正在使用此处记录的方法 如何 创建多项目模板 http msdn microsoft com en us library ms185308 aspx 该模板将具有一个主网站模板 根据 MVC3 模板建模 和一
  • 如何在 ICEfaces 中覆盖默认文件上传 h:message

    我正在使用 ace fileEntry 组件上传文件 成功上传后我收到消息 File Entry uploaded successfully filename 我想覆盖此消息并显示其他消息 某种用于解析上传文件的摘要 有什么想法吗 这是我的
  • 如何编写 fql 查询来列出特定位置的好友

    我无法在任何地方找到 fql 查询来根据我指定的位置列出我的 facebook 好友 我正在尝试在 android 中实现此 fql 查询 请有人帮助我 您正在寻找的 FQL 将是 select name current location
  • 预先填充的数据库。现在我想添加更多数据而不弄乱预先存在的数据

    我已经设置了一个应用程序 它预先填充了数据 将数据库复制到项目的存储中 使用 CoreDataBooks 示例 方法 有什么方法可以预填充核心数据吗 https stackoverflow com questions 2230354 any
  • 红宝石中的反射?

    我很好奇这是如何运作的 例如 如果我创建一个基于工厂模式的类 您可以在其中 注册 类以供以后使用 然后执行类似的操作 FactoryClass register YourClassName param param FactoryClass
  • 使用管道进行 awk 打印在 Jupyter Notebook 中无法使用 iPython

    因此 下面的命令不会在带有 iPython 的 Jupyter Notebook 中提供任何输出 IP 62 172 72 131 cat hits csv grep IP awk print 1 我尝试过双 符号和单 符号 但都不起作用
  • Twitter Bootstrap 按钮在 Firefox 和 Chrome 中奇怪地改变渲染

    我有一个问题 我试图用我自己的颜色覆盖 twitter bootstrap v 2 0 3 主按钮 并且它在 IE 中工作正常 但在 FireFox 或 Chrome 中不起作用 因此 在我的页面上 我首先链接到 bootstrap css
  • 如何将字节数组转换为字符串[重复]

    这个问题在这里已经有答案了 我创建了一个包含两个字符串的字节数组 如何将字节数组转换为字符串 var binWriter new BinaryWriter new MemoryStream binWriter Write value1 bi
  • 快速展开的解决方法

    那么针对这个问题的回答是 Xcode 6 Storyboard Unwind Segue 与 Swift 未连接退出 https stackoverflow com questions 24029586 xcode 6 storyboard
  • 查找 3D 坐标是否已被使用的最快方法

    使用 C 和 Qt 我需要处理大量 3D 坐标 具体来说 当我收到 3D 坐标 由 3 个双精度数组成 时 我需要检查列表是否已处理该坐标 如果没有 那么我处理它并将其添加到列表 或容器 中 坐标量可能会变得非常大 因此我需要将处理后的坐标
  • 在路由定义中间使用贪婪路由参数

    我正在尝试创建遵循树导航系统结构的路线 即我想将树中的整个路径包含在我的路线中 所以如果我有一棵像这样的树 Computers Software 发展 Graphics Hardware CPU 显卡 然后我希望能够有这样的路线 site
  • 在 Spring MVC 控制器中注入 Jaxb2Marshaller

    我正在尝试将静态 xml 转换为控制器类中的 POJO 解组 我正在使用 Jaxb2Marshaller 并在我的中按以下方式进行配置根上下文
  • FactoryGirl 覆盖关联对象的属性

    这可能很简单 但我在任何地方都找不到例子 我有两个工厂 FactoryGirl define do factory profile do user title director bio I am very good at things li