Rails夹具和命名空间模型 - ActiveRecord :: Fixture :: FixtureError

时间:2018-05-07 20:29:26

标签: ruby-on-rails ruby minitest fixtures

在一个应用程序中我在测试套件上工作是用Minitest和灯具完成的,我遇到了这样的问题,我无法解决,也找不到解决方案。

我有一个模型Survey和它的固定装置test/fixtures/surveys.yml

one:
  user: admin
  name: Survey one
  description: This is survey one
  company: university
  review_type: 1

two:
  user: admin
  name: Survey two
  description: This is survey two
  company: university

另外,我有一个名称空间surveys,还有一个问题模型 - Surveys::Question(具有多态关联),它有相应的固定装置test/fixtures/surveys/questions.yml

one:
  sentence: Survey question one?
  display_order: 1
  question_type: 0
  questionable: one (Survey)

two:
  sentence: Survey question two?
  display_order: 2
  question_type: 1
  questionable: one (Survey)

到目前为止一切顺利,事情有效。但每当我尝试将另一个questions定义添加到灯具时,让我们说:

three:
  sentence: Survey question three?
  display_order: 3
  question_type: 2
  questionable: one (Survey)

引发错误:ActiveRecord::Fixture::FixtureError: table "surveys" has no column named "sentence"

我完全无法跟进,为什么突然ActiveRecord::Fixtures无法跟进。

如果有任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

确保您的数据库架构未发生更改,并且未删除或重命名数据库中的列或表。每当您更改架构并运行迁移时,请确保在运行测试之前运行此架构:

rake db:test:prepare

然后再次尝试运行测试。如果您收到相同的错误,则表示您的测试数据库缺少该列。检查您的迁移以确保。

另外,您认为three:中可能需要test/fixtures/surveys.yml吗?