0

ここに私のモデルがあります:

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 に所属していたため、マイグレーションを使用して、db で project_id を gs_collector_id に変更しました。しかし、テストを実行しようとすると (アプリケーション モデルに関係のないユニット/コントローラーでも)、このエラーが発生します。

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

このエラーが発生するのはなぜですか?

この行を Application モデルに追加すると、次のようになります。

belongs_to :project

すべてが再びうまく機能します。しかし、それはもう必要ないはずです。

ここで何が欠けていますか?

4

1 に答える 1

0

ここでの問題は、足場ジェネレーターによって作成されたフィクスチャ ファイルがあったことです。フィクスチャ ファイルを削除すると、すべてうまくいきました。

于 2012-05-10T15:52:21.710 に答える