ruby-on-rails – Rails,fixtures和default_scope

ruby-on-rails – Rails,fixtures和default_scope,第1张

概述我有一个模型“SoftwareVersion”的夹具: testing: id: 4 version: "4.0" file_name: MyString4 is_testing: true 并且模型的默认范围: default_scope where(is_testing: false) 如果我在测试中这样做: software_versions(:testing) 我收到一个错 @H_404_0@ @H_404_0@ 我有一个模型“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使用完全不同的数据库进行测试,因此您不需要列来区分.如果你把灯具放在测试/灯具下,它们将永远不会被装入生产中.

@H_404_0@ 总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails,fixtures和default_scope全部内容,希望文章能够帮你解决ruby-on-rails – Rails,fixtures和default_scope所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存