Ruby on rails 虚拟应用程序中的Datatable错误-列不存在
我有一个带引擎的应用程序。在这个应用程序里面,我创建了一个虚拟的测试应用程序。 我在Ruby on rails 虚拟应用程序中的Datatable错误-列不存在,ruby-on-rails,ruby,rails-engines,Ruby On Rails,Ruby,Rails Engines,我有一个带引擎的应用程序。在这个应用程序里面,我创建了一个虚拟的测试应用程序。 我在我的\u引擎中添加了一个新的迁移。 然后我在运行rails my_engine:install:migrations的虚拟应用程序中导入这个新迁移,然后是“rake db:migrate” 所以要知道这两个模式看起来是相同的 然而,当我运行我的测试时,我得到了 ActiveRecord::StatementInvalid:PG::UndefinedColumn:ERROR:column my_table.new_
我的\u引擎
中添加了一个新的迁移。
然后我在运行rails my_engine:install:migrations的虚拟应用程序中导入这个新迁移,然后是“rake db:migrate”
所以要知道这两个模式看起来是相同的
然而,当我运行我的测试时,我得到了
ActiveRecord::StatementInvalid:PG::UndefinedColumn:ERROR:column my_table.new_字段不存在
您有什么想法吗?您可能只是在
开发
环境中运行迁移,而不是在测试
环境中(因此,不是在测试表中)
对
RAILS\u ENV=test
前缀执行相同的命令尝试运行RAILS\u ENV=test rake db:migrate
,以在test
环境上运行迁移
或者,如果您使用的是rails 4.1+,那么您可以添加ActiveRecord::Migration.Maintenance\u test\u模式代码>到您的rails\u助手
这样做的目的是,当测试模式已经启动时,它不仅仅是提升
挂起迁移时,Rails将尝试加载架构。例外情况将会发生
现在,仅当架构之后有挂起的迁移时才会引发
已加载
使用此选项时,需要注意以下几点:
迁移仍然需要手动运行;虽然现在这只需要在“开发”环境中进行
如果架构尚未初始化,将引发异常。异常将提供说明rake db:migrate需要运行的指令
因此,添加此选项意味着您只需运行一次db:migrate
;仅在您的开发中