加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails,fixtures和default_scope

发布时间:2020-12-17 03:16:33 所属栏目:百科 来源:网络整理
导读:我有一个模型“SoftwareVersion”的夹具: testing: id: 4 version: "4.0" file_name: MyString4 is_testing: true 并且模型的默认范围: default_scope where(is_testing: false) 如果我在测试中这样做: software_versions(:testing) 我收到一个错误: Act
我有一个模型“SoftwareVersion”的夹具:

testing:
  id: 4
  version: "4.0"
  file_name: MyString4
  is_testing: true

并且模型的默认范围:

default_scope where(is_testing: false)

如果我在测试中这样做:

software_versions(:testing)

我收到一个错误:

ActiveRecord::RecordNotFound: Couldn't find SoftwareVersion with id=4 [WHERE `software_versions`.`is_testing` = 0]

这是预期的行为吗?我该如何覆盖呢?

解决方法

是的,这是预期的行为,默认范围将影响所有查询.使用unscoped再次启动干净查询:

SoftwareVersion.unscoped.where(is_testing: true)
SoftwareVersion.unscoped.find(id: 4)
etc.

但除此之外,如果您使用相同的表(带有灯具)来存储生产和测试记录,那么您做错了. Rails使用完全不同的数据库进行测试,因此您不需要列来区分.如果你把灯具放在测试/灯具下,它们将永远不会被装入生产中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读