如何在Rails中更改外键字段?

时间:2012-05-03 16:31:53

标签: ruby-on-rails ruby-on-rails-3

以下是我的模特:

class Project < ActiveRecord::Base
  has_many :gs_collectors, dependent: :destroy

class GsCollector < ActiveRecord::Base
  belongs_to :project
  has_one :application, dependent: :destroy

class Application < ActiveRecord::Base
  belongs_to :gs_collector

这是我的工厂:

  factory :application do
    ....
    association :gs_collector
    association :dust_type
  end

  factory :gs_collector do
    ...
    association :project
  end

  factory :project do
    sequence(:name) { |n| "Project#{n}" }
    contact_name 'John Customer'
  end

应用程序模型用于属于Project,因此我只使用迁移将project_id更改为db中的gs_collector_id。但是,现在我在尝试运行任何测试时都会出现此错误(即使是与应用程序模型无关的单元/控制器):

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'project' in 'field list': INSERT INTO `applications` (`project`, ....

为什么我收到此错误?

如果我将此行重新添加到我的应用程序模型中:

belongs_to :project

一切都很好。但它不再是必要的了。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

这里的问题是我有一个由脚手架生成器创建的夹具文件。一旦我删除了fixtures文件,一切都很好。