rails PG undefined列不存在用于索引创建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rails PG undefined列不存在用于索引创建相关的知识,希望对你有一定的参考价值。

我正在尝试为for列添加索引,但我收到错误:

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "contact" does not exist
: CREATE UNIQUE INDEX  "index_users_on_contact" ON "users"  ("contact")

这很奇怪,因为你在我尝试索引之前看到我正在创建列:

class AddContactToUser < ActiveRecord::Migration[5.1]
  def change
    add_reference :users, :contact, foreign_key: true
    add_index :users, :contact, unique: true
  end
end

为什么我收到此错误?

如果你想知道我为什么要做一个单独的联系模式,那是因为所有用户都有联系人但并非所有联系人都有用户。

答案
add_reference :users, :contact, foreign_key: true

创建一个名为contact_id的列。所以你需要索引

add_index :users, :contact_id, unique: true

以上是关于rails PG undefined列不存在用于索引创建的主要内容,如果未能解决你的问题,请参考以下文章

postgresql中的Rails json列不接受任何值,并在存储后调用时返回nil

PG::UndefinedTable: 错误: 关系“...”不存在

Rails 报告找不到存在的列

PG::UndefinedTable:错误:关系“active_storage_blob”不存在

Rails 中的 PG pg_ext 加载错误

Rails - 致命:数据库“myapp_development”不存在