Ограничения базы данных не требуются больше, чем использование ремней безопасности в вашем автомобиле.Вы можете объезжать все, что вам нравится, и все будет отлично работать, пока не возникнет проблема.Ремень безопасности (ограничения) защищает вас (данные).
Поэтому настоятельно рекомендуется создать ограничения для обеспечения целостности данных на уровне базы данных, поскольку весьма вероятно, что 1) вы будете взаимодействовать сбаза данных в какой-то момент за пределами Rails и 2) Вы допустите ошибку в своем коде, которая приведет к неверным данным.
Ограничения базы данных могут быть более трудоемкими, но это экономит много работы, особенно когда ваш код можетделать предположения о данных и не нужно делать тонны проверок достоверности.
Причина, по которой ActiveRecord не поддерживает внешние ключи "из коробки", заключается в том, что они предназначены для независимой от базы данных и внешних ключейне универсально поддерживаются всеми системами баз данных.