2015-06-06 3 views
0

У меня есть следующий переход:PG :: Ошибка: ОШИБКА: отношение "reportables" не существует

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

Когда я запускаю грабли БД: мигрировать, я получаю следующее сообщение об ошибке:

== 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 не существует. У меня нет таблицы отчетов, потому что это полиморфное отношение. Как я могу это решить?

+0

reportable_type должен быть строкой. –

+0

@test даже во второй ситуации все еще не удается. Ошибка связана с reportable_id. В нем говорится, что нет таблицы под названием reportables. Это полиморфные отношения, поэтому, конечно, нет таблицы, называемой репортажами. Возможно ли создать полиморфное отношение в postgresql? – Donato

+0

Столик уже создан ....? –

ответ

0

Я получил это работает, когда я установил ссылки на ноль:

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

Упоминания ключевым словом является частью внешнего ключа и заставляет базу данных требуют, чтобы значение (s) в указанной колонке (s) таблицы ссылок также присутствуют в указанных столбцах (-ах) таблицы, на которую делается ссылка. Это означает, что он ожидает, что будет таблица отчетов, которой нет. По-видимому, это специфично для PostgreSQL, потому что у меня никогда не было этой проблемы в MySQL.

Смежные вопросы