2017-10-14 11 views
0

私は何が足りないのかよくわかりません - 私は最近Productカテゴリを静的列挙からテーブルに移しましたので、参照を変更する必要がありました。Rails 5 Migration - 参照が見つかりません

私は新鮮なスキーマ(縮小)

のために今、私はProductテーブル

class CreateTasks < ActiveRecord::Migration[5.1] 
    def change 
    create_table :tasks do |t| 
     t.string :task_name 
     t.text :comment 
     t.datetime :task_start_date 
     t.datetime :task_end_date 
     t.references :project 

     t.timestamps 
    end 
    end 
end 

class AddDocumentsToTasks < ActiveRecord::Migration[5.1] 
    def change 
    add_reference :tasks, :document, foreign_key: true 
    add_reference :tasks, :product, foreign_key: true 
    end 
end 


class AddClientIdToTasks < ActiveRecord::Migration[5.1] 
    def change 
    add_foreign_key :tasks, :client, foreign_key: true 
    end 
end 

への参照を持っている必要がありTasksテーブルを構築し、私の多数の移行を組み合わせます実際にはt.integer "product"がタスクフォルダから来ているという手がかりはありません。私はすべてを見てきました。

それがために現在のような警告のすべての統合/シーディングを壊しています: ActiveRecord::AssociationTypeMismatch: Product(#69974683871240) expected, got 1 which is an instance of Integer(#13017840)

私はそれが私が欠けている非常にシンプルなものだが、それは非常に冗長なコードですので、それが動作する理由私はかなり知らないと仮定ドキュメント/プロジェクト用ですが、製品用ではありません。念のため

:私は完全に理由を理解するが、私が何をしたかrails db:reset誤解のようにそれはそうまで は製品の移行

class CreateProducts < ActiveRecord::Migration[5.1] 
    def change 
    create_table :products do |t| 
     t.string :product_name 
     t.text :product_description 
     t.references :client 
     t.references :task 

     t.timestamps 
    end 
    end 

エンド**

更新

がこれを答えていません。いったん私がドロップ/作成/移行/シードを段階的に実行すると、DB構造全体が蹴られ、新しいスキーマが発生しました。

それはdb:reset 私のSchema.rbファイル内のロジックを使用していたようだ。

+0

問題は解決していますか? –

答えて

0

schema.rbは、移行用のキャッシュとして使用されます。したがって、既に移行された移行ファイルを変更すると、変更内容は表示されません。 schema.rbのコンテンツを削除してから、データベースをリセットする必要があります。

関連する問題