我正在尝试为我的Rails应用程序编写一些测试。在我的第一个测试的定义的第一行,Rails抛出了这个无用的错误:
Error:
LabStationTest#test_prioritize_students_basic:
ActiveRecord::StatementInvalid: Could not find table 'equipment'
equipment
是我在先前的迁移中删除的表。我的代码中不再有对其的引用,并且此后多次运行诸如rails db:drop
,rails db:migrate
,rails db:reset
和rails db:test:prepare
之类的命令无济于事。
我试图在项目范围内搜索“设备”一词,但由于某些原因,我确实在CREATE TABLE IF NOT EXISTS "equipment"
中找到了structure.sql
语句。我不确定这是否相关或如何安全删除它,并且找不到该术语的其他引用。
Rails很棒,但是绝对让我发疯了,codegen如何将隐藏的引用分散到整个地方。有人知道我下一步该怎么做吗?
发布此消息后不久,我发现了test/fixtures
中剩余的过时模型-这似乎是罪魁祸首。
诸如此类的错误是我对Rails的最大挫败,他们对我的“基于配置的约定”范式产生了疑问。如果它们至少包括带有错误消息的堆栈跟踪信息,那不会是一半的麻烦,但是即使使用-v
标志,它们也往往提供很少的有用信息