gpt4 book ai didi

ruby-on-rails - Rails、fixtures 和 default_scope

转载 作者:行者123 更新时间:2023-12-04 06:01:44 25 4
gpt4 key购买 nike

我有一个模型“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 使用完全不同的数据库进行测试,因此您不需要列来区分。如果你把灯具放在 test/fixtures 下,它们永远不会被加载到生产中。

关于ruby-on-rails - Rails、fixtures 和 default_scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com