使用Rails的ActiveRecord :: Migration的外键?

Ear*_*rlz 14 migration postgresql ruby-on-rails foreign-keys

我是Ruby on Rails的新手(虽然我很熟悉Ruby)并且看着Migration工具,听起来真的很棒.数据库模式最终(很容易)进入源代码管理.

现在我的问题.使用Postgres作为数据库时,它不会设置外键.我想在我的架构中使用外键的好处,例如引用完整性.那么如何在迁移中应用外键?

mik*_*son 13

Rails的理念是完整性检查是属于模型的业务逻辑.这就是为什么你看到你在数据库中看到的东西; whatever_id只是一个int而不是一个"真正的"fk.它不是一个错误,它的设计和起初有点怪异.通常,驱动人们在数据库级别使用fks的唯一原因是当数据库被多个应用程序或其遗留系统访问时.这里有很多讨论和一些很棒的链接:为什么Rails迁移在应用程序中定义外键而在数据库中没有?


gle*_*ebm 7

看看这个:http://github.com/matthuhiggins/foreigner

但首先要确保你确实需要它们(如引用完整性是什么,理论上为你的代码行应该不是只要破了,你知道:dependent => :destroy之间的差异user.deleteuser.destroy).

  • 顺便说一句,Rails站在fks上不会影响连接速度,你仍然可以在任何字段上定义索引. (2认同)