postgresql上的Activerecord迁移错误

Gre*_*rot 1 postgresql activerecord ruby-on-rails

我有一个错误,没有解释.

我的错误:

G::UndefinedColumn: ERROR:  column "conjoncture_index_id" referenced in foreign key constraint does not exist
: ALTER TABLE "reports" ADD CONSTRAINT "fk_rails_c25ad9a112"
FOREIGN KEY ("conjoncture_index_id")
  REFERENCES "conjoncture_indices" ("id")
Run Code Online (Sandbox Code Playgroud)

我的迁移:

class AddColumnToReports < ActiveRecord::Migration
  def change
    add_reference :reports, :conjoncture_indice, index: true
    add_foreign_key :reports, :conjoncture_indices
  end
end
Run Code Online (Sandbox Code Playgroud)

我的创建表迁移:

class CreateConjonctureIndices < ActiveRecord::Migration
  def change
    create_table :conjoncture_indices do |t|
      t.date :date
      t.float :value

      t.timestamps null: false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的模特:

class ConjonctureIndice < ActiveRecord::Base
    has_many :reports
    by_star_field :date
end
Run Code Online (Sandbox Code Playgroud)

我的ConjonctureIndice shema.rb部分:

  create_table "conjoncture_indices", force: :cascade do |t|
    t.date     "date"
    t.float    "value"
    t.datetime "created_at",                 null: false
    t.datetime "updated_at",                 null: false
  end
Run Code Online (Sandbox Code Playgroud)

我在我的项目中寻找"conjoncture_index",但没有...我认为该项目的旧版本使用"conjoncture_index"而不是"conjoncture_indice",但所有出现都被删除.

Caf*_*der 5

在rails中,迁移名称是复数,而模型名称是单数.所以模型名称应该是Index,但它不能是一个保留关键字,其复数转换为ConjunctureIndices.

注意 - 如果您仍然有疑问,那么您可以删除并重新创建数据库,但我怀疑命名约定在您的情况下是一个问题.