#ruby-on-rails #database #primary-key
#ruby-on-rails #База данных #первичный ключ
Вопрос:
У меня есть таблица, в которой хранятся данные, полученные от третьей стороны через API, и имеет поле идентификатора по умолчанию, которое rails добавляет при запуске миграции. У меня также есть первичный ключ, который я получаю от третьей стороны, который мне нужно хранить и использовать в моей бизнес-логике. Без выполнения следующего, отношения из других моделей не работают:
class ThirdPartyStuff < ActiveRecord::Base
set_primary_key :thirdpartysID
...
end
Это нормально делать? Какие-либо ямы или проблемы, которые могут возникнуть?
Комментарии:
1. вы имеете в виду, что у вас разные первичные ключи в одной таблице?
2. Один добавляется rails автоматически (id) и тот, который я получаю от сторонних данных.
Ответ №1:
У вас может быть только первичный ключ для каждой таблицы (pk может содержать более одного поля, но все равно только один PK).
Если вы хотите, чтобы столбец действовал как PK: установите его как UNIQUE
и NOT NULL
. Если вы хотите сослаться на другую таблицу: создайте Foreign Key
.
Комментарии:
1. Но миграция по-прежнему генерирует поле id , если я удаляю всю базу данных и запускаю миграцию — это нормально?
2. Или я должен каким-то образом установить это поле в качестве primary_key и при миграции?
3. да, помните, что PK используются для идентификации строки при работе в таблице, поэтому используйте этот столбец id в качестве своего PK и добавьте другие столбцы, которые вам нужны.