【发布时间】:2017-06-02 01:43:53
【问题描述】:
我一直在关注如何以 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) 中,它说对于引用助手,您传递模型名称。对于 Postgres,情况似乎并非如此。
用表名替换模型名是一个足够简单的修复,但我有大量表要迁移,每个表都可以有很多引用。有没有人见过这个,有没有办法继续使用脚手架实用程序进行迁移?
感谢任何有用的帮助,
- 乔
【问题讨论】:
标签: ruby-on-rails postgresql rails-postgresql