Rails中的外键通常是否可以避免?

rye*_*guy 5 ruby-on-rails

Rails无法在迁移中创建外键(但是有插件可以执行此操作).例如,还有许多级联选项,因此您可以获得级联删除.

内置了所有这些选项后,是否值得在数据库中创建外键?这是Rails开发人员通常会避免的事情或者是什么?您认为如果推荐的做法是Rails会原生支持它.

Ada*_*ers 8

刚刚加入John Topley的回答,我做了一些研究,发现了一些DHH关于这个主题的想法,这些想法引起了一个有趣的读物:

我找不到DHH将数据库称为"巨型哈希",所以也许约翰正在解释一个不同的引用.我很想阅读DHH最新版本的观点.

在过去的几年里,我没有发现其他人的太多意见.以下是我发现的:


Joh*_*ley 5

这是一个神圣的问题,因为DHH(Rails的创建者)之前曾说过,他认为数据库本质上是一个巨大的哈希表,因此利用数据库引擎擅长的一些功能,通过使用诸如约束或存储过程不被认为是Rails纯粹主义者的Rails Way.

也就是说,如果您希望强制最接近数据的数据的完整性,或者您的数据库由其他应用程序共享,那么请务必使用其中一个插件来创建外键.毕竟,它有什么害处,对吧?

  • 听起来 Rails 将成为良好数据库使用的失败者:p (2认同)