【问题标题】:DB migrate scripts break on references数据库迁移脚本在引用上中断
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多