代码之家  ›  专栏  ›  技术社区  ›  Orsay

虚拟应用程序中的Datatable错误-列不存在

  •  1
  • Orsay  · 技术社区  · 8 年前

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

    所以要知道两个模式看起来是相同的。

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

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

    你有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Will Hall    8 年前

    试着跑步 RAILS_ENV=test rake db:migrate 在您的服务器上运行迁移 test 环境

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

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

    它所做的不是在测试模式具有 在等待迁移时,Rails将尝试加载模式。例外情况将 现在,只有在架构之后有挂起的迁移时才会引发 已加载。

    使用此功能时,需要注意以下几点:

    迁移仍然需要手动运行;尽管现在这只需要在“开发”环境中完成 如果架构尚未初始化,则会引发异常。异常将提供说明rake db:migrate需要运行的指令。

    所以加上这个就意味着你只需要跑步 db:migrate 一旦就在你的 development

        2
  •  0
  •   Samy Kacimi    8 年前

    您可能刚刚运行了迁移 development 环境,但不在 test 环境(因此,不在测试表中)。

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