我一直在关注如何使用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实用程序进行迁移?
感谢任何有用的帮助,
答案 0 :(得分:1)
应该是t.references :school_class
而不是:SchoolClass
并且正确的脚手架命令是rails g scaffold Student name school_class:references
。见rails guides on naming conventions