Нужны ли Rails ограничения уровня базы данных?
У меня та же проблема, что и в следующий пост.
поэтому мне интересно, почему Rails не поддерживает создание внешних ключей по умолчанию? Разве это не необходимо? Или мы должны сделать это вручную?
2 ответов
ограничения базы данных не требуются больше, чем ношение ремней безопасности требуется в вашем автомобиле. Вы можете ездить вокруг все, что вам нравится, и все будет работать отлично, пока не придет проблема. Ремень безопасности (ограничения) держит вас (данные) в безопасности.
поэтому настоятельно рекомендуется создавать ограничения для обеспечения целостности данных на уровне базы данных, потому что весьма вероятно, что 1) Вы будете взаимодействовать с базой данных в какой-то момент за пределами Rails и 2) вы сделаете ошибка в коде, которая вызывает недопустимые данные.
ограничения целостности БД может быть больше работы, но это экономит много работы, особенно когда ваш код может делать предположения о данных, и не имеет отношения к т проверки.
причина, по которой ActiveRecord не поддерживает внешние ключи из коробки, заключается в том, что он предназначен для агностики базы данных, а внешние ключи не поддерживаются всеми системами баз данных.
вы можете добавить поддержку внешнего ключа с помощью иностранец плагин.
не все поддерживаемые базы данных для ActiveRecord поддерживают внешние ключи, поэтому Rails framework не включает его в качестве основной функции.
Примечание: выше уже не является точным, как Rails добавлена поддержка FK в 4.2.