数据库迁移脚本在引用上中断

时间:2017-01-17 20:39:33

标签: ruby-on-rails postgresql rails-postgresql

我一直在关注如何使用Rails方式创建表的在线示例,我注意到我创建的包含引用的迁移脚本不能立即使用。我想也许我做错了所以我现在尝试针对SQLite3数据源进行测试应用程序/迁移。我运行了以下命令:

$ 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行,并将类名替换为实际的表名。在Rails迁移指南(http://guides.rubyonrails.org/v2.3/migrations.html#special-helpers)中,它表示对于引用帮助程序,您传递了Model名称。对于Postgres,情况似乎并非如此。

这是一个简单的修复,用表名替换模型名称,但我有大量的表要迁移,每个表可以有很多引用。有没有人见过这个,有没有办法继续使用scaffold实用程序进行迁移?

感谢任何有用的帮助,

1 个答案:

答案 0 :(得分:1)

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