Несколько первичных ключей в rails? — (rails beginner)

#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 и добавьте другие столбцы, которые вам нужны.