Нужно ли заполнять чужой ключ подряд в связанной таблице в БД? - PullRequest
0 голосов
/ 04 апреля 2019

Рассмотрим следующие связанные таблицы:

image

Некоторые exercises «требуют» машины, некоторые - нет. Я думаю, что поле machine должно быть логическим.

Затем при сохранении session_set, если логическое значение равно true, я хочу требовать сохранения внешнего ключа machine_id. Если false, ключ foregin не требуется.

Возможно ли это вообще или это опровергает общую цель обладания внешним ключом?

1 Ответ

0 голосов
/ 04 апреля 2019

Внешний ключ может быть обязательным или необязательным (он может содержать или не содержать ноль), поэтому вам не нужно никаких дополнительных логических полей.

в рельсах 5 по умолчанию требуется belongs_to ассоциация, поэтому мы указываем optional

belongs_to :machine, optional: true

до рельсов 5 должно быть достаточно

belongs_to :machine

Теперь вам нужно убедиться, что у вашего поля в таблице базы данных нет ограничения null: false, и вы настроены.

Теперь я заметил, что ваше поле называется machine, а не machine_id, как rails хочет по умолчанию. В этом случае попробуйте

belongs_to :machine, optional: true, foreign_key: :machine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...