虚拟应用程序中的数据表错误 - 列不存在

Datatable error in dummy app - column does not exist

我有一个带有引擎的应用程序。在这个应用程序中,我创建了一个用于测试的虚拟应用程序。 我在 my_engine 中添加了一个新迁移。 然后我在虚拟应用程序中导入这个新迁移 运行ning rails my_engine:install:migrations 然后 'rake db:migrate'.

所以知道这两个模式看起来是一样的。

然而,当我 运行 我的测试得到

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column my_table.new_field does not exist

你有什么想法吗?

您可能只是 运行 在 development 环境中迁移,而不是在 test 环境中(因此,不在测试 table 中)。

使用 RAILS_ENV=test 前缀执行相同的命令

在您的 test 环境中尝试 运行ning RAILS_ENV=test rake db:migrate 到 运行 迁移。

或者,如果您使用的是 rails 4.1+,则可以将 ActiveRecord::Migration.maintain_test_schema! 添加到 rails_helper

https://relishapp.com/rspec/rspec-rails/docs/upgrade

What this does is that rather than just raising when the test schema has pending migrations, Rails will try to load the schema. An exception will now only be raised if there are pending migrations afterwards the schema has been loaded.

There are a few caveates to be aware of when using this:

Migrations still need to be run manually; although now this only has to be done in the 'development' environment An exception will be raised If the schema has not been initialized. The exception will provide instructions stating rake db:migrate needs to be run.

所以添加这个意味着你只需要 运行 db:migrate 一次;就在你的 development