Нужны ли Rails ограничения уровня базы данных?

У меня та же проблема, что и в следующий пост.

поэтому мне интересно, почему Rails не поддерживает создание внешних ключей по умолчанию? Разве это не необходимо? Или мы должны сделать это вручную?

2 ответов


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

поэтому настоятельно рекомендуется создавать ограничения для обеспечения целостности данных на уровне базы данных, потому что весьма вероятно, что 1) Вы будете взаимодействовать с базой данных в какой-то момент за пределами Rails и 2) вы сделаете ошибка в коде, которая вызывает недопустимые данные.

ограничения целостности БД может быть больше работы, но это экономит много работы, особенно когда ваш код может делать предположения о данных, и не имеет отношения к т проверки.

причина, по которой ActiveRecord не поддерживает внешние ключи из коробки, заключается в том, что он предназначен для агностики базы данных, а внешние ключи не поддерживаются всеми системами баз данных.


вы можете добавить поддержку внешнего ключа с помощью иностранец плагин.

не все поддерживаемые базы данных для ActiveRecord поддерживают внешние ключи, поэтому Rails framework не включает его в качестве основной функции.


Примечание: выше уже не является точным, как Rails добавлена поддержка FK в 4.2.