Rails无法在db中找到记录(但实际存在)

时间:2016-12-30 19:16:57

标签: mysql ruby-on-rails ruby activerecord

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

我甚至添加了调试来查看日志。当我做Model.where(slug: :name).count时,它会返回0.但是这个slug名称确实存在记录。

我在哪里解决这个问题?

2 个答案:

答案 0 :(得分:0)

运行测试时,Rails使用不同的数据库。常见的约定是projectname_development vs projectname_test(最后是projectname_production)。

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

  • 您不想通过测试弄乱您的开发数据库。许多开发人员在开发过程中让他们的测试不断运行。
  • 您编写的每一项测试都应该独立于周围的数据。

您必须为每个测试设置测试数据。你没有提到你使用的测试系统。

查看FixturesFactory Girl

答案 1 :(得分:0)

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