Rails无法在迁移中创建外键(但是有插件可以执行此操作).例如,还有许多级联选项,因此您可以获得级联删除.
内置了所有这些选项后,是否值得在数据库中创建外键?这是Rails开发人员通常会避免的事情或者是什么?您认为如果推荐的做法是Rails会原生支持它.
刚刚加入John Topley的回答,我做了一些研究,发现了一些DHH关于这个主题的想法,这些想法引起了一个有趣的读物:
我找不到DHH将数据库称为"巨型哈希",所以也许约翰正在解释一个不同的引用.我很想阅读DHH最新版本的观点.
在过去的几年里,我没有发现其他人的太多意见.以下是我发现的:
这是一个神圣的问题,因为DHH(Rails的创建者)之前曾说过,他认为数据库本质上是一个巨大的哈希表,因此利用数据库引擎擅长的一些功能,通过使用诸如约束或存储过程不被认为是Rails纯粹主义者的Rails Way.
也就是说,如果您希望强制最接近数据的数据的完整性,或者您的数据库由其他应用程序共享,那么请务必使用其中一个插件来创建外键.毕竟,它有什么害处,对吧?