数据库迁移脚本中断引用

DB migrate scripts break on references

我一直在关注如何以 Rails 方式创建 tables 的在线示例,我注意到我创建的包含引用的迁移脚本无法立即使用。我想也许我做错了什么所以我刚刚尝试对 SQLite3 数据源进行测试 application/migration。我运行以下命令:

$ rails g scaffold SchoolClass name
$ rails g scaffold Student name SchoolClass:references

它制作了我的迁移脚本(以及其他所有内容)。

Migration script for dependent table with reference to Model

我 运行 SQLite3 迁移脚本,它运行良好。

当我尝试对 Postgres 数据源执行上述相同步骤时,我不断得到以下结果:

PG::UndefinedTable: ERROR: relation does not exist

解决此问题的唯一方法是进入迁移脚本并更新 t.references 行并将 class 名称替换为实际的 table 名称。在 Rails 迁移指南 (http://guides.rubyonrails.org/v2.3/migrations.html#special-helpers) 中,它说您为引用助手传递模型名称。对于 Postgres,情况似乎并非如此。

用 table 名称替换模型名称是一个足够简单的修复,但我有大量 table 需要迁移,每个 table 都可以有一个很好的数字的参考资料。有没有人以前见过这个,有什么方法可以继续使用脚手架实用程序进行迁移吗?

感谢任何有用的帮助,

应该是t.references :school_class而不是:SchoolClass,正确的脚手架命令是rails g scaffold Student name school_class:references。参见 rails guides on naming conventions