PG ::错误:错误:关系“reportables”不存在

时间:2015-06-06 23:19:11

标签: ruby-on-rails

我有以下迁移:

  def change
    add_column :reports, :reportable_id, :integer
    add_column :reports, :reportable_type, :integer
  end

当我运行rake db:migrate时,出现以下错误:

==  AddReportableToReports: migrating =========================================
-- add_column(:reports, :reportable_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  relation "reportables" does not exist
: ALTER TABLE "reports" ADD FOREIGN KEY ("reportable_id") REFERENCES "reportables" ("id")

这也给了我同样的错误:

change_table :reports do |t|
  t.references :reportable, polymorphic: true
end

它表示reportables表不存在。我没有reportables表,因为这是一个多态关系。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

当我设置对nil的引用时,我得到了它的工作:

add_column :reports, :reportable_id, :integer, references: nil
add_column :reports, :reportable_type, :string

REFERENCES关键字是外键约束的一部分,它会导致数据库要求引用表的指定列中的值也存在于引用的指定列中表。这意味着它希望有一个reportables表,但没有。显然,这是PostgreSQL特有的,因为我在MySQL中从未遇到过这个问题。