2016-08-05 2 views
2

У меня есть модель User, и там у нас есть primary_key как user_id вместо id, я знаю, что должен использовать id для primary_key, но клиенты хотят, чтобы мы использовали user_id вместо Я бы.Как добавить ограничение внешнего ключа в rails, у которого нет идентификатора столбца

У меня есть другая таблица, и я должен связать эту таблицу с user_id

Я добавляю миграции, как это для другой таблицы:

t.references :user,    index: true, foreign_key: true 

Но когда я бег миграции я получаю ошибку, связанную для внешнего ключа, как:

ActiveRecord :: StatementInvalid: PG :: UndefinedColumn: ОШИБКА: колонка "ID" ссылка на ограничение внешнего ключа не существует ALTER TABLE "user_devices" ADD CONSTRAINT «fk_rails_e700a96 826" FOREIGN KEY („user_id“) ЛИТЕРАТУРЫ „пользователи“ („ID“)

кажется рельсы попробовать по умолчанию, чтобы указать другую таблицу с колонкой ид, но я user_id в таблице пользователей.

Так как я могу добавить ограничения внешнего ключа, как:

ALTER TABLE "user_devices" ADD CONSTRAINT "fk_rails_e700a96826" 
FOREIGN KEY ("user_id") 
    REFERENCES "users" ("user_id") 

с рельсов миграции?

ответ

5

Вы можете создать отдельную миграцию, как это:

add_column :user_devices,:user_id,:integer 
add_foreign_key :user_devices, :users, column: :user_id, primary_key: "user_id" 
+0

Да, я получил решение, а на документ http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_foreign_key add_foreign_key: user_devices,: users, column:: user_id, primary_key:: user_id – Thorin

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