Mysql 轨道可以';在数据库中找不到记录(但实际存在)

Mysql 轨道可以';在数据库中找不到记录(但实际存在),mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,例如,我正在数据库中搜索某物,Model.find_by(slug::name)。它在本地环境中工作正常,但在测试中它给我零。(我检查了三遍,有db记录) 我甚至添加了调试来查看日志。当我执行Model.where(slug::name).count时,它返回0。但这个记录确实存在于这个鼻涕虫的名字中 在哪里可以找到解决方法?运行测试时,Rails使用不同的数据库。常见的惯例是projectname_开发与projectname_测试(最后是projectname_生产) 通常,测试系统在运行测

例如,我正在数据库中搜索某物,
Model.find_by(slug::name)
。它在本地环境中工作正常,但在测试中它给我零。(我检查了三遍,有db记录)

我甚至添加了调试来查看日志。当我执行
Model.where(slug::name).count时,它返回0。但这个记录确实存在于这个鼻涕虫的名字中


在哪里可以找到解决方法?

运行测试时,Rails使用不同的数据库。常见的惯例是projectname_开发与projectname_测试(最后是projectname_生产)

通常,测试系统在运行测试之前也会清除测试数据库。这有两个原因:

  • 您不想在测试中弄乱开发数据库。许多开发人员让他们的测试在开发过程中持续运行
  • 您编写的每一个测试都应该独立于周围的数据,自行工作
您必须为每个测试设置测试数据。你没有提到你使用的测试系统


查看和。

存储在测试数据库中的数据是临时的,在测试结束后将被删除。
开发数据库独立于测试数据库。

您进行了检查以确保开发数据库和测试数据库相同吗?“我对其进行了三次检查,并且在db中有记录”三次检查了您的测试数据库或开发数据库,因为默认情况下,它们通常是独立的数据库,按设计不存在。但我检查了请求的记录是否存在。例如,我添加了debugger:和“request.slug”,它返回我的“administration”,我进入测试服务器数据库,找到了带有slug“administration”的记录。所以记录存在。Ofc,我正在检查测试数据库。不是我的本地人!你在使用什么测试框架吗?很抱歉,它不是很好。我知道这件事。我要说的是,如果记录实际上存在于数据库中的模型表中,那么,
Model.find_by(slug::name)
返回nil。