Ruby on rails postgresql上的Activerecord迁移错误

Ruby on rails postgresql上的Activerecord迁移错误,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我有一个没有解释的错误 我的错误: 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 "conjonctur

我有一个没有解释的错误

我的错误:

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")
class AddColumnToReports < ActiveRecord::Migration
  def change
    add_reference :reports, :conjoncture_indice, index: true
    add_foreign_key :reports, :conjoncture_indices
  end
end
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
class ConjonctureIndice < ActiveRecord::Base
    has_many :reports
    by_star_field :date
end
  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
我的迁移:

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")
class AddColumnToReports < ActiveRecord::Migration
  def change
    add_reference :reports, :conjoncture_indice, index: true
    add_foreign_key :reports, :conjoncture_indices
  end
end
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
class ConjonctureIndice < ActiveRecord::Base
    has_many :reports
    by_star_field :date
end
  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

我正在我的项目中寻找“联合索引”,但没有。。。我认为旧版本的项目使用“conconcture\u index”而不是“conconcture\u indice”,但所有出现的都被删除。

在rails中,迁移名称是复数,而模型名称是单数。因此,模型名称应该是索引,但不能是索引,因为它是一个保留关键字,其复数形式转换为ConjunctureIndex


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

在rails中,迁移名称是复数的,而模型名称是单数的。因此,模型名称应该是索引,但不能是索引,因为它是一个保留关键字,其复数形式转换为ConjunctureIndex


注意-如果您仍有疑问,则可以删除并重新创建数据库,但我怀疑命名约定在您的案例中是一个问题。

好的,我发现了问题。我认为错误信息与之前相同,但他引用了另一个名为“信心指数”的表。错误来自“indice”字。。当我删除它时,我没有问题。

好的,我发现了问题。我认为错误信息与之前相同,但他引用了另一个名为“信心指数”的表。错误来自“indice”字。。当我删除它时,我没有问题。

你能发布conconconcture的schema.rb吗?我担心命名确实是个问题,除了一切看起来都正常之外。您可以重命名并检查它吗?只需将它命名为conconture并删除索引并标记部分I将所有出现的conconctureIndicate重命名为conconconture,并且始终出现相同的错误“G::UndefinedColumn:error:外键约束中引用的列“confidence\u index\u id”不存在“activerecord是否有缓存?”?他会用它来迁移。。。因为在我的项目中,没有任何地方提到这个“索引”,所以你可以发布conconctureIndicate部分的schema.rb吗?我担心命名确实是个问题,除了一切看起来都正常之外。您可以重命名并检查它吗?只需将它命名为conconture并删除索引并标记部分I将所有出现的conconctureIndicate重命名为conconconture,并且始终出现相同的错误“G::UndefinedColumn:error:外键约束中引用的列“confidence\u index\u id”不存在“activerecord是否有缓存?”?他会用它来迁移。。。因为在我的项目中,没有任何地方提到这个“索引”重新命名和迁移,让我知道发生了什么然后重新命名和迁移,让我知道发生了什么然后很高兴你能找到它。很高兴你能找到它。