为什么“PG :: UndefinedColumn:”来自一个来自宝石的专栏?

时间:2018-01-08 16:20:57

标签: ruby-on-rails rubygems migration

我有一个名为Foo的宝石。在这个宝石中,我有两个分支:masterdevelop

在我的项目中,我需要使用develop分支(包含新的迁移)。 所以在我的gemfile中我添加:

gem "foo", git: "https://github.com/orsay/foo.git", branch: "develop"

然后运行bundle install,然后重新启动我的服务器。

这是我在使用localhost时遇到的错误:3000:

  

PG :: UndefinedColumn:错误:列my_added_column不存在。

为什么会这样?我不需要从gem中导入迁移...

当我运行bundle show foo时,代码是正确的。

请问好吗? :)

1 个答案:

答案 0 :(得分:0)

运行rake db:migrate时,不会运行gems中定义的迁移。希望迁移父 - 应用程序数据库的宝石应定义Rails Engine,这将使rake任务可用于在主机应用程序中安装gem迁移。例如,在您的情况下(Gem为foo),bundle exec rake foo:install:migrations。您的gem必须正确配置为Rails引擎才能执行此操作。

作为安装迁移的替代方法,您可以使用初始化程序在所需的gem中自动运行迁移,如果您更愿意这样做,但它有点复杂。在Syncing Migrations

中有更详细的信息