测试与 Rspec 的“关联”的正确方法?

2024-06-23

我正在尝试测试以下场景:

-> 我有一个名为 Team 的模型,当它由用户创建时它才有意义。因此,每个团队实例必须与一个用户相关。

为了测试这一点,我做了以下工作:

describe Team do

...

  it "should be associated with a user" do
    no_user_team = Team.new(:user => nil)
    no_user_team.should_not be_valid
  end

...

end

这迫使我将团队模型更改为:

class Team < ActiveRecord::Base
  # Setup accessible (or protected) attributes for your model
  attr_accessible :name, :user

  validates_presence_of :name
  validates_presence_of :user

  belongs_to :user
end

您认为这正确吗?我只是担心使 :user 属性可访问(批量分配)。


我通常使用这种方法:

describe User do
  it "should have many teams" do
    t = User.reflect_on_association(:teams)
    expect(t.macro).to eq(:has_many)
  end
end

更好的解决方案是使用 gemshoulda https://github.com/thoughtbot/shoulda这将使您能够简单地:

describe Team do
  it { should belong_to(:user) }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试与 Rspec 的“关联”的正确方法? 的相关文章

  • 如何在 Ubuntu 中使用 gems?

    我最近升级到 Ubuntu 9 04 但在使用 gems 时遇到问题 我使用 apt get 安装了 Ruby Rubygems 和 Rails 这rails命令确实有效 然后我安装了 capistrano 和其他 gem 例如 herok
  • ActiveRecord 和关联排序

    我有一个像这样的简单 AR 关联 Question has many answers Answer belongs to question with question id int 11 NOT NULL is accepted tinyi
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 哈米尔评论结束

    我是哈米尔新手 这让我很困惑 我不喜欢删除可以注释掉的代码 但我不知道如何在 haml 中正确结束注释 这是一个代码片段 field f label member id br f text field member id field f l
  • Heroku 带宽和空间

    Heroku 对于免费应用程序支持多少流量带宽和磁盘空间 Heroku 免费版有一个 5 MB 的数据库和 1 个 dyno dyno 是运行并响应请求的应用程序的实例 此外 您的 slug 的大小有 100 MB 的限制 这包括您使用的所
  • 为什么在安装 gem 'pg' 时出现错误? [复制]

    这个问题在这里已经有答案了 可能的重复 无法在 ubuntu 上安装 pg gem 找不到 libpq fe h 标头 https stackoverflow com questions 6040583 unable to install
  • 对于 ActiveReord 中的 has_many 关联,counter_cache 不会递减

    我的 Rails 3 应用程序有 2 个模型 第三个模型是它们之间的联接表及其 has many 关系 基本上 User 和 Show 通过 SavedShow 连接起来 允许用户保存节目列表 class Show lt ActiveRec
  • puma 初始化程序不适用于 Rails 4.2

    我之前安装过很多次puma 从来没有出现过这个问题 我逐字遵循heroku 的指示 我创建了一个Procfile里面有这个 web bundle exec puma C config puma rb 这是配置文件 puma rb worke
  • HAML:form_tag 困境(缩进?)

    我正在制作 用户设置表单 并坚持使用 HAML form tag 1 2 3 each do i check box tag accept i submit tag 这会导致 语法错误 意外的 kENSURE 期望 end 工作变体是 fo
  • asset_host 和相关协议 URL 更改为 http

    我的应用程序 Rails 4 0 0 的某些元素可通过 http 和 https 连接使用 因此我已将 asset host 配置为使用相对协议 url 这应该允许浏览器进行切换它希望从中获取资产的协议 config action cont
  • 使用 authlogic-oauth2 服务器无法启动

    我已将 oauth2 和 authlogic oauth2 包含在 gemfile 中 因为我想使用它们并尝试启动服务器 它没有启动并给我错误 Library Ruby Gems 1 8 gems railties 3 0 3 lib ra
  • 非特权、非 root 用户无需 root 或 sudo 即可启动或重新启动 Webserver 服务器(例如 nginx)

    我正在使用 capistrano 部署 Rails Web 应用程序 我想为网络服务器上的部署用户提供尽可能少的权限 作为非特权用户 除了重新启动网络服务器之外 我能够做我需要做的一切 我在 ubuntu 服务器上执行此操作 但这个问题并非
  • Rails 6 中的protect_from_forgery?

    The protect from forgery方法不包含在默认 Rails 6 应用程序的应用程序控制器中 但有嵌入式 ruby在主应用程序布局中 这是否意味着protect from forgery方法已被抽象并且在应用程序控制器中不再
  • 如何使用 Unicorn 进行滚动重启?

    假设我对 Rails 应用程序做了一些更改 例如更改 html 布局 我如何使用 Unicorn 进行滚动重启 实际上 人们希望为最新版本的 Rails 应用程序启动独角兽进程 或工作人员 然后自动将流量从旧的独角兽进程 工作人员切换到新的
  • Rails 资产管道不包括 application.js 清单中所需的文件

    Rails 资产管道不包含 application js 中所需的文件 呈现给浏览器的唯一 javascript 文件是 application js 并且 require 行未编译为包含应有的标签 This is a manifest f
  • 通过 Devise 将 Discourse SSO 与现有 Rails 站点相结合

    我有一个现有的 Rails 应用程序 它使用 devise 作为用户身份验证 我添加了一个话语论坛 http www discourse org一切都很顺利 它驻留在子域上 我已阅读该帖子https meta discourse org t
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • Rails:将值序列化为逗号分隔而不是 YAML

    我正在寻找一种方法来存储例如的序列化值 列中的 ID 在之前的声明中 这不是最佳设计 该列用于关联记录的 ID 但仅在显示记录时使用 因此不会对该列进行选择进行查询 也不会对此列进行联接任何一个 在 Rails 中 我可以使用以下方法序列化
  • 运行 cron 作业“require”时出错:无法加载此类文件——bundler/setup (LoadError)

    我已经使用 Capistrano 3 部署了应用程序 我不断收到以下错误 require cannot load such file bundler setup LoadError 这是 cron 选项卡列表 PATH home deplo
  • 更改设备消息“电子邮件已被占用”

    我在 ruby on Rails 应用程序中使用 devise gem 用户注册时 如果电子邮件已存在 则会出现默认消息 电子邮件已被占用 我已经在 en yml 中更改了此消息 activerecord errors messages t

随机推荐

  • 使用 Python/Pandas 提取时间序列中的工作日

    我正在处理时间序列中的高频数据我想从我的数据中获取所有工作日 我的数据观测值以秒为单位分隔 因此每天有 86400 秒 并且我的数据集分布在 31 天中 因此有 2 678 400 个观测值 这是我的数据 部分 In 1 ts Out 1
  • 删除小数点后的尾随零雪花

    我一直在尝试从小数点后的数字列中删除尾随零 例如 0 978219150000 gt 0 97821915 0 650502591918 gt 0 650502591918 0 975479450000 gt 0 97547945 数据类型
  • Django - 将结果查询为“关联”字典?

    我想知道 Django 中是否有任何方便的助手可以将查询结果返回为更 可用 的格式 这样我就不必在我的视图中迭代它们 我有一个这样的查询 self filter key in keys values key value 我想要的最终结果是一
  • C++ 数据文件、数组和计算分配

    我是 C 新手 我的一项作业遇到了问题 目标是从如下所示的数据文件加载数据 item number date quantity cost per each 1000 6 1 2018 2 2 18 1001 6 2 2018 3 4 44
  • 如何重命名对象中的字段

    我正在使用 Angular 5 我有 假后端 项目数组 我的情况 我正在等待以下对象结构 id number title string 但是 后端向我发送了错误的结构 id number name string 我需要从后端接收数据 如果字
  • 无法从一组表达式创建复合表达式>

    答案往下看 我正在尝试构建一个结合了 Func
  • pdo 相对于 mysql_* 或 mysqli_* 的优点[重复]

    这个问题在这里已经有答案了 我注意到很多人正在使用或迁移到pdo 我以前从未使用过它 我真的很不愿意改变它 无论如何我仍然没有改变 但我想从使用pdo的人那里知道每天为什么我应该改变这一点 我的意思是它比 mysql 或 mysqli 有什
  • 如何静默来自 GCC 的 #pragma 消息

    我没兴趣看 pragma message适合我的构建 它只会使输出变得混乱 我顺便告诉 Clang Wno pragma messages 但是 GCC 不理解该标志 并且我找不到任何类似的标志 我如何要求 GCC 忽略 pragma me
  • 在另一个控件之前插入一个控件

    如何在 ASP NET 中动态地将一个控件插入到另一个控件之前 假设 control1 是网页上的某个控件 我想在 control1 之前动态创建并插入一个表 e g table1 new Table table1 ID Table1 但接
  • Opencart 系统/修改文件夹如何运作?

    我对 OC 2 X 很陌生 当我对网站进行更改时 我注意到它们没有出现 当我在系统 修改文件夹中进行更改时 就会出现更改 我认为这个文件夹是新的 与 vqmod 无关 我认为这是一个基本上优先于核心文件的文件 不幸的是 当我安装插件时 它也
  • Olve Maudal 的 C++ 测验背后的解释(别名模板)

    以下代码来自http www pvv org oma PubQuiz ACCU Apr2014 pdf http www pvv org oma PubQuiz ACCU Apr2014 pdf 6 第 34 页的解决方案 目标是猜测以下的
  • 抛出新的异常与 Catch 块

    以下之间是否存在行为差异 if s null s is a string throw new NullReferenceException And try Console Writeline s catch NullReferenceExc
  • HOGDescriptor 带有视频来识别物体

    不幸的是 我既是 python 又是 openCV 初学者 所以如果问题很愚蠢 请原谅我 我正在尝试使用cv2 HOGDescriptor识别视频中的物体 我关心的是逐帧识别 即没有跟踪等 这是我正在做的事情 我读了视频 目前是 mpg 通
  • PyCharm - 项目结构 - 来源与资源

    在 PyCharm 中目录可以标记为 Sources 资源 模板 Excluded 我想知道来源和资源有什么区别 我在文档中找不到有关我的问题的任何信息 有什么定义吗 来源是 来源 py 文件 资源是资产 例如 css png txt和其他
  • 如何防止Android在调用相机意图后重新启动应用程序?

    在低内存设备上 我在调用相机意图后遇到了问题 当收到活动结果时 Android 会重新启动整个应用程序 有人遇到过同样的问题吗 有什么解决办法吗 我不久前遇到了同样的问题 Android 系统在启动 Media Intent 时停止应用程序
  • 将 2D 数组的分布式块发送到 MPI 中的根进程

    我有一个 2D 数组 分布在 MPI 进程网格中 本例中为 3 x 2 进程 数组的值是在数组块分配到的进程内生成的 我想在根进程中将所有这些块收集在一起以显示它们 到目前为止 我有下面的代码 这会生成一个笛卡尔通信器 找出 MPI 进程的
  • 如何在猫鼬中获得多个结果并将其合并为一个响应

    在 API 路由 调用中 我希望有 3 个 mongoose 查询 然后组合结果以形成响应 json Query student countDocuments then stundentNumber gt return stundentNu
  • 如何编写正则表达式来匹配 Verilog 文件中的模块实例化?

    我正在开发一个项目 通过使用 perl 脚本语言来促进 verilog 编程 现在我想编写一个脚本来扫描顶级verilog文件 然后生成模块的层次结构列表 这表明我需要提取模块实例化 从verilog文件中的语句来看 问题是这样的 如何编写
  • Java 比较排序

    我有一个ArrayList of Person对象 APerson has name age and height 我的目标是解决这个问题ArrayList
  • 测试与 Rspec 的“关联”的正确方法?

    我正在尝试测试以下场景 gt 我有一个名为 Team 的模型 当它由用户创建时它才有意义 因此 每个团队实例必须与一个用户相关 为了测试这一点 我做了以下工作 describe Team do it should be associated